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

Bob*_*ght 46 java configuration jvm jvm-hotspot

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

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

Von*_*onC 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 ) );
  }
}
Run Code Online (Sandbox Code Playgroud)

这应该显示所有JVM参数.

注意:我们在VCS中也没有JVM参数,但是在数据库中,我们自己的生成器中的启动器读取.这样,我们可以远程更改这些值,而无需重新部署JVM参数文件设置.


您将在本文中找到各种JVM工具(来自"Dustin的软件开发Cogitations and Speculations"),包括 Java Application Launcher链接到:

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

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

这两个资源都列出并描述了一些/所有可用的不推荐用于临时开发人员的双X参数(-XX).


Mik*_*gou 10

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

java -XshowSettings:all