Java VM EXCEPTION_ACCESS_VIOLATIONの考えられる原因は?
質問
EXCEPTION_ACCESS_VIOLATIONでJava VMがクラッシュし、hs_err_pidXXX.logファイルが生成される場合、それは何を示していますか?エラー自体は、基本的にnullポインター例外です。常にJVMのバグが原因ですか、またはハードウェアの誤動作やソフトウェアの競合などの他の原因がありますか?
編集:ネイティブコンポーネントがあります。これはwin32のSWTアプリケーションです。
解決
ほとんどの場合、これはVMのバグです。 ただし、ネイティブコード(JNI呼び出しなど)によって発生する可能性があります。
hs_err_pidXXX.logファイルには、問題が発生した場所に関する情報が含まれている必要があります。
「ヒープ」も確認できます。ファイル内のセクション。 VMのバグの多くは、ガベージコレクションが原因です(特に古いVMの場合)。このセクションでは、クラッシュ時にガベージが実行されていたかどうかを示します。また、このセクションは、ヒープの一部のセクションがいっぱいになった場合に表示されます(パーセント値)。
VMは、メモリ不足の状況でクラッシュする可能性が非常に高くなります。
他のヒント
回答が見つかりました!
同じエラーが発生し、pidログファイルの内容を提供した他のユーザーが64ビットWindowsを実行していることに気付きました。私のように。最後のログファイルには、PATHステートメントが含まれていました。そこで、C:\ Windows \ SysWOW64が%SystemRoot%\ system32の前に誤ってリストされているのを確認できました。修正すると、例外は消えました。
最初にすべきことは、JVMを可能な限り最新のものにアップグレードすることです。
問題を繰り返しますか?それともランダムに発生するようですか?最近、JVMがランダムにクラッシュするという問題が発生しました。ハードウェアの問題であることが判明しました。ドライブを新しいサーバーに入れると、完全になくなりました。
下の行、JVMがクラッシュすることはありません。JNIを実行していない場合、上記のポスターで述べたように、ハードウェアの問題があります。
何を探すべきかわかっている場合、問題の原因はhs_err *ファイルに文書化されます。見てください。それでもはっきりしない場合は、スタックトレースの最初の5行または10行とその他の関連情報を投稿することを検討してください(すべてを投稿しないでください。役立つ情報はたくさんあります。ただし、どの1%が重要であるかを把握する必要があります。 :-))
ブラウザウィジェットを使用し、ブラウザウィジェットでJavaScriptを実行していますか?その場合、SWTの一部のバージョンにバグがあり、さまざまなWindowsライブラリのネイティブコードでJVMがクラッシュします。
(私が開いた)2つの例は、 bug 217306 とバグ127960 。ただし、これら2つのバグレポートは、SWTでクラッシュするJVMのバグレポートだけではありません。
ブラウザウィジェットを使用していない場合、これらの提案は役に立ちません。その場合、 SWTバグのリストを検索できます。 JVMクラッシュ。これらのいずれにも問題がない場合は、SWTでバグレポートを開くことを強くお勧めします。
JNLPアプリケーションでも、私が長い間使用してきたものと同じ問題があり、かなり信頼できます。この問題は、Windows 7からWindows 10にアップグレードした直後に始まりました。調査によると、ほとんどの場合、Win 10のバグです。
以下は解決策ではなく、butい回避策です。 jre / binディレクトリには、 javaws.exe があります。 /プロパティ/互換性を右クリックして、管理者としてこのプログラムを実行にチェックを入れると、JNLPアプリが動作し始めました。
このアプローチはセキュリティ上の問題を引き起こす可能性があることに注意してください。他のオプションがなく、自分が何をしているかを100%知っている場合にのみ使用してください。