2013-02-05 2 views
8

可能性の重複をクラッシュした場合に実行されることが保証されて:私はshutdownhookは、JVMがクラッシュした場合のシナリオで実行することが保証されているかどうかを知りたい
When Shutdown Hooks Break BadはShutdownhookは、JVMが

+0

それはjavadocを読んでいないようです... –

+2

まあ、マシンをシャットダウンする場合は、何もないことが保証されますもう起こっている。結論:JVMは、JVM外の世界を制御することはできません。 –

+0

JVMクラッシュを意味しますか?いいえ。例外の後でシャットダウンを意味する場合は、実行する必要があります。人々がJVMクラッシュについて話すとき、ほとんどの場合、彼らのプログラムは例外またはエラーを投げたことを意味します。 –

答えて

11

いいえ。 from the docs

まれに、仮想マシンが正常にシャットダウンせずに中止、つまり実行を停止することがあります。これは、仮想マシンが外部で終了した場合、たとえばUnixではSIGKILLシグナル、Microsoft WindowsではTerminateProcessコールで発生します。たとえば、内部データ構造が壊れたり、存在しないメモリにアクセスしようとしたりするなどして、ネイティブメソッドが失敗した場合、仮想マシンは中止されることもあります。 仮想マシンが異常終了した場合、シャットダウンフックが実行されるかどうかは保証されません。 JVMがシャットダウンを開始し、マシン自体がシャットダウンを取得する場合shutdownhook
によって作成されたスレッドが得ることはありません前に

(強調鉱山)

1

shutdownhookしかし行われるために必要なものは何でもタスクのためにスレッドを作成します実行のCPUサイクルと私はここでshutdownhookが実行されないと思う...

+0

JVMがクラッシュした場合、コンピュータが強制的にシャットダウンされた場合に何が起こるかを尋ねました。後者の場合は、電源を切った後も何も(シャットダウンフックでさえ)実行されないことが直感的に分かります。 – nneonneo

+0

ねえ、ありがとう!!私はちょうどクラッシュするJVMの可能なシナリオに取り組んでいた.. –

関連する問題