读取Java JVM启动参数(例如-Xmx)

时间:2009-10-05 03:59:12

标签: java configuration jvm jvm-hotspot

我正在试图弄清楚是否有办法从正在运行的java进程中确定JVM启动属性。具体来说,我试图找出存储-Xmx(最大堆大小)和-XX:MaxPermSize等参数的位置。我正在运行Sun的1.6 jvm。

如果您想知道我为什么要这样做,我有许多JVM网络服务器,可能正确配置也可能没有,我想将其添加到启动代码检查中。检查一下到处部署的java代码比手动查找和检查所有jvm启动文件要容易得多。现在,jvm配置文件的好坏不是我们构建过程的一部分,也不是检查到源代码控制。

2 个答案:

答案 0 :(得分:53)

尝试:

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参数文件设置。


你会发现各种JVM tools to use in this article(来自"Dustin's Software Development Cogitations and Speculations"),包括。{ Java Application Launcher链接到:

  

此技术利用自J2SE 5以来可用的Platform MXBeans(Java SE 6中添加了自定义MXBeans支持)。

     

使用Sun的JVM时,有关JVM参数的两个有用信息来源是:

           

这两个资源都列出并描述了一些/所有不推荐用于休闲开发者的双X参数(-XX)。

答案 1 :(得分:10)

使用Java 7或更高版本,它就像

一样简单

java -XshowSettings:all