我想从Java类跨越一个新的JVM进程。
我可以使用Runtime.getRuntime().exec(...)
,但这是一个非常低级别的api。
我正在寻找能够为我提供Process
api的东西,比较方便一些:
MonitoredJavaProcess javaProcess = new MonitoredJavaProcess(MyMainClass.class, "-Xmx1g");
javaProcess.getGcLogStream();
javaProcess.getHeapSizeObserver();
// ...
javaProcess.waitForShutdown();
关于我正在尝试做什么的一些上下文:我正在运行JUnit一个测试套件taht启动一个嵌入式Jetty服务器并运行一些测试。这意味着测试的Jetty服务器线程和junit测试线程在同一个JVM中运行。我需要在单独的JVM上运行它们。我可以使用ant或maven或starup jetty外部的任何东西,然后针对它运行测试套件,但对我的简单场景来说听起来有点过分。
答案 0 :(得分:3)
也许你的方法不正确。也许您应该考虑使用JMX来监控您的JVM?
干杯,
答案 1 :(得分:2)
你究竟想做什么。 您可以查看java.lang.ProcessBuilder它可能满足您的需求。