有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

启动的程序如下:

//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


共 (1) 个答案

  1. # 1 楼答案

    为了获得所有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));
    
      } 
    
    }