8

system.exit と少し混乱しています。このリンクからいくつかのことを見つけました。

しかし、私の心にはいくつかの疑問があります。システム終了を使用すると、作成されたオブジェクト、変数などはどうなりますか。system.exit を呼び出すと、すべてが破棄されますか? 「はい」の場合、system.exit() の前にガベージ コレクションを強制するのはなぜですか? 「いいえ」の場合、作成されたオブジェクトは JVM (メモリ) にどのくらいの期間保存されますか? システムを終了した後にプログラムを再度実行する場合、System.exit(); を呼び出した後に以前のオブジェクトが破棄されなかった場合、以前のオブジェクトはどうなりますか?

ありがとう。

4

3 に答える 3

6

システム終了を使用すると、作成されたオブジェクト、変数などはどうなりますか。system.exit を呼び出すと、すべてが破棄されますか?

システム出口によって破棄されるのは、ユーザー スレッドだけです。

system.exit() の前にガベージ コレクションを強制するのはなぜですか?

これは何もしない可能性があるため、あまり役に立ちません。

作成されたオブジェクトが JVM (メモリ) に保存される期間は?

それらが不要になり、クリーンアップが行われるまで、JVM が実際に終了します。

システムを終了した後にプログラムを再度実行する場合、System.exit(); を呼び出した後に以前のオブジェクトが破棄されなかった場合、以前のオブジェクトはどうなりますか?

プログラムが終了すると、それらは破棄されます。いずれにせよ、すべてのプログラムは、複数回実行されたとしても、独自の新しい変数セットを取得します。プログラム間で変数を共有することはありません。

于 2013-08-12T10:55:32.387 に答える
5

あなたが知っておくべきことの短い答えexit

  • 終了ステータスを設定する唯一の方法であるため、便利です。

  • 通常、これを使用する場所はmainメソッドの最後だけです。

  • その結果、JVM が終了します (プロセスが強制終了されるため、必然的にすべてのメモリが解放されます)。

于 2014-07-29T14:12:32.820 に答える
5

この場合、JVM をコンピューター上で実行されるプログラムと考えると便利だと思います。System.exit() はそのプログラムを終了します。プログラム内には、コンピューターの OS または JVM ランタイムによって保持されるものは何もありませんが、もちろん、プログラムは長期ストレージに何かを書き込む可能性があります。ただし、変数、作成されたオブジェクトなどはすべて失われ、復元できません。

于 2013-08-12T10:45:25.053 に答える