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

2022-09-01 00:06:44

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

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


答案 1

尝试:

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工具的良好总结(来自“Dustin的软件开发Cogitations and Speculations”),包括Java应用程序启动器链接到:

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

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

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


答案 2

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

java -XshowSettings:all


推荐