2017-08-28 10 views
1

JVMの起動時に、OSがメモリを割り当て、そのメモリがヒープとスタックとして使用されます。ヒープ内にオブジェクトを作成すると、JVMの終了後にオブジェクトはどうなりますか? JVMが再起動するとOSは静かにそこにとどまり、OSはそのメモリを再割り当てしますか?それとも何か他のことが起こるのですか?JVMの終了時にヒープ内のオブジェクトはどうなりますか?

+2

通常、プロセスが終了すると、オペレーティングシステムの仮想メモリマネージャは、プロセスによって割り当てられたすべてのメモリを再利用します。この場合、プロセスはちょうどJVMになります。他のプロセスと違いはありません。 –

答えて

2

ほとんどのオブジェクトは、単に「蒸発」、彼らは場所を取る(ファイナライズを含む)は、通常のガベージコレクションプロセスなしで消えます。これらのオブジェクトがオープンファイルのようなOSリソースを表す場合、それらのリソースは解放(クローズ)されますが、未処理のデータがすべて解放されることは保証されません(あなたが自分でcloseをしたときに起こります)。

一般的に、プロセスが終了すると、通常のスタックとヒープメモリはすべてOSによって即座に解放されますが(実行可能ファイルやその他の読み込まれたファイルの格納に使用されるようなものもあります)それらのファイルを必要とする他のプロセスのために使用されます)。例外にはプロセス間通信に使用されるshared memoryのようなものがあります。これはおそらく知らないうちに使用していない可能性があります。

1

ヒープ内のオブジェクトは、JVMが終了すると(ほとんどの場合)解放されます。

私が言う理由ほとんどの場合、はヒープを解放するのがオペレーティングシステムの責任であり、JVMだけではないためです。オペレーティングシステムは、リースのためのメモリ割り当てをクリーンアップし、使用可能にするための努力をしています。しかし、これはまた、オペレーティングシステムに依存します。私はそこには、この主流の方法に従わないオペレーティングシステムがあると確信しています。 JVMが  — すなわちを終了すると

関連する問題