Java 如何从易于控制和监视的JVM中生成JVM?

Java 如何从易于控制和监视的JVM中生成JVM?,java,jvm,Java,Jvm,我想从一个Java类跨越一个新的JVM进程 我可以使用Runtime.getRuntime().exec(…),但这是一个非常低级的api 我正在寻找一种能为我将过程api包装成更方便一点的东西,比如: MonitoredJavaProcess javaProcess = new MonitoredJavaProcess(MyMainClass.class, "-Xmx1g"); javaProcess.getGcLogStream(); javaProcess.getHeapSizeObser

我想从一个Java类跨越一个新的JVM进程

我可以使用
Runtime.getRuntime().exec(…)
,但这是一个非常低级的api

我正在寻找一种能为我将
过程
api包装成更方便一点的东西,比如:

MonitoredJavaProcess javaProcess = new MonitoredJavaProcess(MyMainClass.class, "-Xmx1g");
javaProcess.getGcLogStream();
javaProcess.getHeapSizeObserver();
// ...
javaProcess.waitForShutdown();

关于我要做的事情:我正在运行JUnit测试套件taht启动嵌入式Jetty服务器并对其运行一些测试。这意味着测试的Jetty服务器线程和junit测试线程在同一个JVM中运行。我需要在分离JVM时运行它们。我可以使用ant或maven或任何外部工具来启动jetty,然后针对它运行测试套件,但对于我的简单场景来说,这听起来有点过分。

也许您的方法不正确。也许你应该考虑使用监视你的JVM来代替?< /P>
干杯,

你到底想做什么。
也许你可以看看,它可能适合你的需要。

我试着做些什么:我正在运行JUnit测试套件taht启动嵌入式Jetty服务器并对其运行一些测试。这意味着测试的Jetty服务器线程和junit测试线程在同一个JVM中运行。我需要在分离JVM时运行它们。我可以使用ant或maven或任何外部工具来启动jetty,然后针对它运行测试套件,但对于我的简单场景来说,这听起来有点过分了,我不知道为什么需要一个单独的JVM,但我仍然认为JMX是在您的场景中测量性能的一个好选择。我需要单独的JVM来测量生产代码的CPU、内存和GC状态。我不希望JUnit测试线程对性能报告有任何影响。那些JUnit测试也使用了大量的内存和CPU。我决定将
ProcessBuilder
和JMX封装在一个类
JettyServerInseparateJvm
中,该类处理流程并通过metods公开JMX统计信息。我尝试做的是:我运行JUnit测试套件taht启动嵌入式Jetty服务器并对其运行一些测试。这意味着测试的Jetty服务器线程和junit测试线程在同一个JVM中运行。我需要在分离JVM时运行它们。我可以使用ant或maven或任何外部工具来启动jetty,然后针对它运行测试套件,但对于我的简单场景来说,这听起来有点过火。
java.lang.ProcessBuilder
提供了更多的功能,但仍然远远不是我想要的。不幸的是,(JVM监控工具)可能可以帮助您。