私はJavaプログラムからプロセスを開始しています。私はそれを保持し、プログラムの後の時点で、このプロセスを終了させる適切な方法である自分自身をきれいにしてシャットダウンするように、いくつかのシグナルを送ることができます(UNIXシグナルのように - 別のメカニズム)。私は後で再起動してプロセスを保持し、任意の回数繰り返し停止することができます。開いたプロセスをJavaでクリーンアップするにはどうすればよいですか?
私のプログラムが存在する場合は、そのプロセスが終了することを知らせ、それが存在することを確認したいと思います。さもなければ、Javaはプロセスを非同期的に起動するので、プログラムが終了した後も永続的に実行され続けます。
私はプロセス変数を含むオブジェクトのデストラクタでこれを行うと思ったが、Javaにはデストラクタがないようだ。 JNIで割り当てられたメモリを解放するためのfinalize()メソッドがありますが、これはそうではなく、finalize()が呼び出されることは保証できません。オブジェクトがガベージコレクションされたときのみ呼び出されます。プログラムはガベージコレクションを呼び出さずに終了まで実行することができます。この場合、すべてが一度に解放され、ガベージコレクションやfinalize()は発生しません。
私のプログラムがこのクリーンアップコードを終了したときに、最初に呼び出されることを確認する最良の方法は何ですか?
私はJava 1.6がRuntime.addShutdownHook()メソッドを導入したのを見ていますが、現在はJava 1.5に固執しています。
[Javaのデストラクタはありますか?](http://stackoverflow.com/questions/171952/is-there-a-destructor-for-java) – Raedwald