读取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