读取Java JVM启动参数(例如-Xmx)
我试图找出是否有一种方法来确定在运行的Java进程中的JVM启动属性。 具体来说,我试图找出参数,如-Xmx(最大堆大小)和-XX:MaxPermSize被存储。 我正在运行Sun的1.6 jvm。
如果你想知道为什么要这样做,我有一些JVM的networking服务器,可能或可能不正确configuration,我想添加到启动代码检查。 检查一段随处可用的java代码比手动查找并检查所有的jvm启动文件要容易得多。 现在,jvmconfiguration文件的好坏不是我们构build过程的一部分,也不是源代码控制。
尝试:
import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; import java.util.List; public void runtimeParameters() { RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean(); List<String> aList = bean.getInputArguments(); for (int i = 0; i < aList.size(); i++) { System.out.println( aList.get( i ) ); } }
这应该显示所有的JVM参数。
注意:我们在VCS中没有JVM参数,但是在数据库中,我们自己的发射器在产品中读取。 这样,我们可以远程更改这些值,而无需重新部署JVM参数文件设置。
您将会在本文中find各种JVM工具的良好总结(来自“Dustin的软件开发思考和推测” ),其中包括Java Application Launcher链接:
-
ManagementFactory.getRuntimeMXBean(
)调用 -
getInputArguments()
javadoc - 从Java访问JVM参数 (例如,为了确定JVM是否以debugging模式运行,为了改变应用程序的“网格初始化”逻辑)
- 注释typesMXBean
- MXBean Java教程
该技术利用了自J2SE 5以来可用的平台MXBeans(在Java SE 6中添加了自定义MXBeans支持)。
使用Sun的JVM时,可用的JVM参数有两个有用的信息来源:
- JVM选项集合
- 查尔斯Nutter的最喜欢的热点JVM标志 。
这两个资源都列出并描述了可用的一些/所有不推荐使用的偶然开发者双
X
参数(-XX
)。
使用Java 7或更高版本,这很容易
java -XshowSettings:all
- 如何从Eclipse中设置java.library.path
- 作为一名开发人员,您对Windows安装有什么样的改变?
- 尝试导出可运行Jar时,“启动configuration”显示空白?
- 如何在运行时在我的Grails Config.groovy中获得好东西?
- 如何在Tomcat上部署基于EJB的应用程序
- 如何导入一个模块给定的完整path?
- SpringMVC可以configuration为处理所有请求,但排除静态内容目录吗?
- 如何用C#中的代码更改networking设置(IP地址,DNS,WINS,主机名)
- Maven:是否可以覆盖已经为父POM中的configuration文件定义的插件的configuration