繁体   English   中英

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

[英]Java - Get JVM memory settings at runtime

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

流程启动如下:

//https://stackoverflow.com/questions/636367/executing-a-java-application-in-a-separate-process
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

为了获取所有 JVM 参数,包括 Xmx 等,您必须使用

    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));

  } 

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM