代码之家  ›  专栏  ›  技术社区  ›  Bob Albright

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

  •  46
  • Bob Albright  · 技术社区  · 16 年前

    我试图弄清楚是否有一种方法可以在运行的Java进程中确定JVM启动属性。具体地说,我试图找出-xmx(最大堆大小)和-xx:maxpermsize等参数的存储位置。我在经营Sun的1.6 JVM。

    如果您想知道我为什么要这样做,我有一些可能配置正确或可能配置不正确的JVM WebServer,我想将其添加到启动代码检查中。对我来说,检查一个到处部署的Java代码比手动查找和检查所有JVM启动文件要容易得多。现在,无论好坏,jvm配置文件不是构建过程的一部分,也不是签入源代码管理的一部分。

    2 回复  |  直到 10 年前
        1
  •  53
  •   Dave Jarvis James Eichele    12 年前

    尝试:

    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 链接到:

    这项技术利用了MXBeans平台,因为 J2SE 5 (添加了自定义MXBeans支持 Java SE 6 )

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

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

        2
  •  9
  •   Mike Duigou    10 年前

    用Java 7或更高版本

    java -XshowSettings:all

    推荐文章