Java VM EXCEPTION_ACCESS_VIOLATIONでクラッシュし、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%is重要なのかを把握する必要があります:-))
私は長い間使ってきたJNLPアプリケーションでも同じ問題を抱えており、かなり信頼できます。この問題は、Windows 7からWindows 10にアップグレードした直後に始まりました。私の調査によると、ほとんどの場合、Win 10のバグです。
以下は解決策ではありませんが、い回避策です。 jre/binディレクトリには、javaws.exeがあります。 I右クリック/ Properties/Compatibilityにチェックマークを付けて管理者としてこのプログラムを実行、 JNLPアプリが機能し始めました。
このアプローチはセキュリティ上の問題を引き起こす可能性があり、他の選択肢がなく、何をしているのかを100%知っている場合にのみ使用してください。
ブラウザウィジェットを使用しており、ブラウザウィジェットでJavaScriptを実行していますか?その場合、SWTの一部のバージョンにバグがあり、さまざまなWindowsライブラリのネイティブコードでJVMがクラッシュします。
2つの例(私が開いた)は bug 217306 と bug 12796 です。ただし、これら2つのバグレポートは、SWTでクラッシュするJVMのバグレポートだけではありません。
ブラウザウィジェットを使用していない場合、これらの提案は役に立ちません。その場合、 JVMクラッシュを引き起こすSWTバグ のリストを検索できます。これらのいずれも問題でない場合は、SWTでバグレポートを開くことを強くお勧めします。