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 に答える