2012-01-19 18 views
4

このJavaアプリケーションを終了すると、JavaアプリケーションJVM(1.6.0_26,32ビット)が散発的にクラッシュします。 この断続的なJVMのクラッシュの問題は、64ビットのWindows OSにしか影響しないようです。 この問題は、32ビットWindows OSおよびMac OS Xでは発生しません。 誰も私にこの理由を教えてもらえますか? 実際にこのJavaアプリケーションは100〜150ライブラリを使用し、実行中にクラッシュすることはありません。アプリケーションがクローズするとクラッシュします。 64ビットマシンで32ビットJVMを使用するのが適切ですか?64ビットマシンでJVM 32ビットがクラッシュする

ご協力いただきありがとうございます。

+0

終了時にアプリケーションが特に何かしますか?特に、OSに関係するものは何ですか? – madth3

+2

JVMのクラッシュはありますか?クラッシュレポートには何がありますか?ハンドルを閉じる、他のJNI関連のものなどのように、「終了」で発生する特別なアクションを考慮してください。 – Jayan

+0

いいえ、OSに関連する何もしません。 – sneha

答えて

1

短い回答です。64ビットマシンで32ビットJVMを使用することは適切ではありません。長い答えは、Windows 64ビットOSは、オプションがない場合、互換モードで32ビットプログラムを実行できます。

64ビットJVMはWindows OS上で正常に動作するので、実際に行う必要はありません。これはまた、32ビットプロセスが使用できるより多くのメモリとスピードを利用できることを意味します。

http://msdn.microsoft.com/en-us/library/aa384249(v=vs.85).aspx

+0

私は32ビットJVMをWindows 64ビットで使用することを余儀なくされました。これは、独自の32ビットネイティブデータベースドライバを使用しているいくつかのアプリケーションのためです。 64ビットJVMはそれらをロードすることを拒否します。しかし、32ビットJVMは正常に動作します(私が知る限り)。 –

+0

あなたのご意見をお寄せいただきありがとうございます。とにかく32ビットアプリケーションを32ビットJVMと64ビットマシンで実行するにはどうしますか?私はJavaの問題に直面している、なぜあなたはmsdnのリンクを共有している? – sneha

+0

MSDNリンクは、64ビットWindowsが32ビットプロセスをどのように実行するかについて語っています。私はあなたがそれを読んで、64ビットマシン上で32ビットプロセスをエミュレートすることに関するすべての前提を守っているかどうかを確認する必要があると思います。ネイティブコードで32ビットデータベースドライバを使用している場合、Javaが死んでいない可能性があります。それは問題であるあなたの運転手になる可能性があります。クラッシュレポートを見て、クラッシュしたときのコードを確認してください。それがドライバの中にあれば、32ビットエミュレーションのドライバに問題があるという証拠です。ドライバを削除して、タイプ4のjdbcドライバをmysqlのような別のDBで使用できますか? – chubbsondubs

0

私は64ビットwin7の上で私のJVM 32ビットをインストールした場所サードパーティのOLEブリッジがロードされるまで、同様の問題を持って、すべてがうまくいきました。 JVMは、Javaバイナリの動作が停止し、クラッシュレポートのコードのMessageがHEAP_MEMORY_CORRUPTIONであったというクラッシュレポートを出しました。しかし、私がプロファイラを添付したとき、ヒープは最大限の下限をはるかに超えていたので、それは非常に奇妙です。私はブリッジプロバイダがWOW64でエミュレートされている間に許可されていないカーネルモードの実行を可能にしたとします。

私は鉱山を解決しました。私が2003年をインストールしたときに、代わりに2007年を占めることはできませんでした。あなたのアプリがすぐにクラッシュしたのか、いくつかのネイティブコールが起きているかどうかを確認してください。

関連する問題