Java - 在运行时获取JVM内存设置

5

我有一个Java 7程序,可以启动其他Java进程。我希望将原始程序的内存设置传递给子进程。

进程的启动方式如下:

//https://dev59.com/tnRB5IYBdhLWcg3wZmdz
String javaHome = System.getProperty("java.home");
String javaBin = javaHome + File.separator + "bin" + File.separator + "java";
String classpath = System.getProperty("java.class.path");
String className = MyClass.class.getCanonicalName();

ProcessBuilder pb = new ProcessBuilder(javaBin, "-cp", classpath, "-Djava.ext.dirs=" + System.getProperty("java.ext.dirs"), className, arg1, arg2);
logger.debug("Running as {}", new Object[]{pb.command()});

pb.start();

这个过程在程序需要其子进程有额外内存的情况下不能正常工作。

我已经使用 System.getProperties() 进行迭代,查找任何内存设置,但没有发现存在。

具体来说,我需要的三个内存配置是 -Xms-Xmx-XX:MaxPermSize


1个回答

2
为了获取包括Xmx等在内的所有JVM参数,您需要使用:
    java.lang.management.RuntimeMXBean;

以下示例列出了所有可用的JVM参数:
  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));

  } 

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接