5

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

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

我正在寻找可以Process为我包装该 api 的更方便的东西,例如:

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

关于我正在尝试做的事情的一些背景信息:我正在运行 JUnit 一个测试套件,它启动了一个嵌入式 Jetty 服务器并针对它运行了一些测试。这意味着经过测试的 Jetty 服务器线程和 junit 测试线程在同一个 JVM 中运行。我需要在单独的 JVM 中运行它们。我可以使用 ant 或 maven 或启动码头外部的任何东西,然后针对它运行测试套件,但对于我的简单场景来说,这听起来有点矫枉过正。

4

2 回答 2

3

也许你的方法不是正确的。也许您应该考虑使用JMX来监控您的 JVM?

干杯,

于 2013-01-29T12:35:13.150 回答
2

你实际上想要做什么。也许您可以查看java.lang.ProcessBuilder它可能适合您的需要。

于 2013-01-29T12:44:41.900 回答