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 など、桟橋を起動する外部のものを使用して、それに対してテスト スイートを実行することもできますが、私の単純なシナリオでは少しやり過ぎに思えます。