我想从 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 或启动码头外部的任何东西,然后针对它运行测试套件,但对于我的简单场景来说,这听起来有点矫枉过正。