JVMをダウンタイムさせる
913 ワード
以下はjava code greeksの上の1篇の文章で、比較的に面白くて、javaの1つの抜け穴と言えるでしょうか?
最近、綿密なテストが有害である可能性があることが分かった.テストのカバー度を拡大します.簡単なコードのため、デバッグに数時間かかりました.今回の不快なテストの原因は、そのコードがJVMをクラッシュさせるだけでなく、最下位のマシンをダウンタイムさせることです.
次のコードを実行します(リスク自負に注意しましょう).コンパイルと実行時には、tools.jarをclasspathに配置します.
上のコードは簡単です.既存のID-1のJAVAプロセスに現在のプロセスを添付します.しかし、私たちは友好的なエラーのヒントを得ることができません.代わりにシステムのブルースクリーンです.
非常に興味深いシステムクラッシュの経験と印象的な経験-WindowsシステムがMac OS XとLinuxより優れていることに感心した唯一の事例です.つまり、Windowsマシンはこのコードを正常に実行し、警告メッセージ「No such process」を与え、Mac OS Xと異なるシリーズのLinuxがクラッシュします.
このことは私たちにどんな啓示をもたらすことができますか.まず、JVMがオペレーティングシステムを自殺的な試みから保護するための砂箱を持っていること自体が偉大なことです.また、現代化されたランタイムデバッグツールを持つことを再学習します.これは事実ですが、ソースポイントに戻り、長い間新しい方法でデバッグする必要があります.
原文の出典
最近、綿密なテストが有害である可能性があることが分かった.テストのカバー度を拡大します.簡単なコードのため、デバッグに数時間かかりました.今回の不快なテストの原因は、そのコードがJVMをクラッシュさせるだけでなく、最下位のマシンをダウンタイムさせることです.
次のコードを実行します(リスク自負に注意しましょう).コンパイルと実行時には、tools.jarをclasspathに配置します.
public class Crash {
public static void main(String... args) throws Exception {
com.sun.tools.attach.VirtualMachine.attach("-1");
}
}
上のコードは簡単です.既存のID-1のJAVAプロセスに現在のプロセスを添付します.しかし、私たちは友好的なエラーのヒントを得ることができません.代わりにシステムのブルースクリーンです.
非常に興味深いシステムクラッシュの経験と印象的な経験-WindowsシステムがMac OS XとLinuxより優れていることに感心した唯一の事例です.つまり、Windowsマシンはこのコードを正常に実行し、警告メッセージ「No such process」を与え、Mac OS Xと異なるシリーズのLinuxがクラッシュします.
このことは私たちにどんな啓示をもたらすことができますか.まず、JVMがオペレーティングシステムを自殺的な試みから保護するための砂箱を持っていること自体が偉大なことです.また、現代化されたランタイムデバッグツールを持つことを再学習します.これは事実ですが、ソースポイントに戻り、長い間新しい方法でデバッグする必要があります.
原文の出典