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

读取Java JVM启动参数(例如-Xmx),java,configuration,jvm,jvm-hotspot,Java,Configuration,Jvm,Jvm Hotspot,我试图找出是否有一种方法可以从正在运行的java进程中确定JVM启动属性。具体来说,我试图找出诸如-Xmx(最大堆大小)和-XX:MaxPermSize等参数的存储位置。我正在运行Sun的1.6 jvm 如果您想知道我为什么要这样做,我有许多JVM Web服务器可能配置正确,也可能配置不正确,我想将其添加到启动代码检查中。对我来说,签入一段到处部署的java代码要比手动查找和检查所有jvm启动文件容易得多。目前,无论好坏,jvm配置文件都不是我们构建过程的一部分,也没有签入源代码管理。试试: i

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

如果您想知道我为什么要这样做,我有许多JVM Web服务器可能配置正确,也可能配置不正确,我想将其添加到启动代码检查中。对我来说,签入一段到处部署的java代码要比手动查找和检查所有jvm启动文件容易得多。目前,无论好坏,jvm配置文件都不是我们构建过程的一部分,也没有签入源代码管理。

试试:

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 ) );
  }
}
导入java.lang.management.ManagementFactory;
导入java.lang.management.RuntimeMXBean;
导入java.util.List;
public void runtimeParameters(){
RuntimeMXBean=ManagementFactory.getRuntimeMXBean();
List aList=bean.getInputArguments();
对于(int i=0;i
这应该显示所有JVM参数

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


你会发现一个很好的目录,包括 链接至:

  • 召唤
  • javadoc
  • (例如,确定JVM是否在调试模式下运行,以改变应用程序的“网格初始化”逻辑)
此技术利用了平台MXBeans,因为(中添加了自定义MXBeans支持)

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

  • 查尔斯·纳特的
这两个参考资料都列出并描述了一些/所有不建议临时开发人员使用的双
X
参数(
-XX


使用Java7或更高版本,它与


java-XshowSettings:all

就像一个魔咒!很明显,我对java.lang.management的了解不如我应该的那么深。