0

jnlpファイルからJava 64ビットで起動しようとするEclipse(プラグインベース)アプリケーションがあります(ビルドにはmaven tychoを使用しました)。アプリケーションを起動してすぐに応答しなくなり、場合によっては自動的に終了することさえあります。アプリケーションを Java 32 ビットで起動すると、アプリケーションは正常に動作します。

ログ ファイルを確認すると、java.lang.OutOfMemoryError: PermGen space 例外が発生します。MaxPermSize を 756m に増やしましたが、まだ機能しません。アプリケーションがブロックされると、CPU の使用率がほぼ 100% に達することがわかります。

問題や説明を修正するために私ができることについて提案がある場合は、それらを共有してください。

ありがとうございました!

4

2 に答える 2

0

多くのクラスをロードすると、perm スペースがいっぱいになります。

このFAQから:

パーマネント ジェネレーションがいっぱいになっているかどうかを確認するにはどうすればよいですか?

1.4.2 以降 -XX:+PrintGCDetails は、各ガベージ コレクションで収集されたヒープのすべての部分に関する情報を出力します。完全なコレクションの場合

[フル GC [Tenured: 30437K->33739K(280576K), 0.7050569 秒] 106231K->33739K(362112K), [Perm: 2919K->2919K(16384K)], 0.7052334 秒]

この例は、permanent 世代でほとんど収集されなかったこと (コレクション前に使用された 2919K からコレクション後に使用された 2919K になった) を示しており、permanent 世代の現在のサイズは 16384K です。

クラスローダのリークに悩まされている場合は、この記事「修正方法」の記事に興味があるかもしれません。

于 2012-06-18T16:45:53.347 に答える
0

私にとっての解決策は、Java 1.7 に変更することでした。以前に Java 1.6.0_26_x64 と Java 1.6.0_29_x64 を試したところ、上記のエラーが発生しました。

現在 Java 1.7.0_04_x64 に変更しましたが、ブロックすることなくスムーズに動作します。

編集: Java 1.6.0_33 でも動作します。

于 2012-06-19T08:31:32.383 に答える