web-dev-qa-db-ja.com

ヒープ領域が不足しています

ヒープ領域に問題があります。私のプログラムは単純です。 2つのアクター(送信および受信)があり、「送信」アクターは「受信」するために毎秒10000オブジェクトを渡し、受信はそれらのオブジェクトを公開します。受信者が受信したオブジェクトはコンテナに保存されていますが、コンテナは毎秒空になっています。したがって、コンテナーがスペース不足になる可能性はありません。 420000個のオブジェクトの後で、Eclipseは「ioconsole updater has occurred problem」と言うエラーを表示します。詳細に移動すると、エラーが表示されます内部エラー:: Javaヒープスペース

ヒープサイズを増やしてみました。私のヒープサイズは8096mで、maxpermsizeは4096です

私はvisualVmを使用してコードを監視していますが、ヒープサイズをまったく超えていないことに気づきました。問題を修正する方法として完全に空白。

他の可能性のあるシナリオがそのようなエラーにつながる可能性があることを誰かが私に知らせることができますか?.

19
Rags

IOConsoleはEclipseクラスであり、プログラムのクラスではありません。 System.outにたくさん印刷していますか? [ウィンドウ]> [設定]で、「コンソール」を検索します。すべてのコンソールバッファに何らかの制限を設定します。プログラムからの出力を減らしてみてください。多分代わりにファイルにログを記録します。

41
John Watts

次のJVM引数を追加して、メモリ使用量とGCの動作を把握できます。

-Xloggc:/tmp/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
5
kevin_c

この問題は、コンソールのバッファサイズが原因で発生しました。

解決 :

コンソールを右クリック->設定

コンソールを制限します。

4
abinov

私は問題に遭遇し、Eclipseでヒープとバッファーの設定を変更することで解決しようとしました。しかし、私はそれを解決することができませんでした。その後、プログラムにメモリリークがあり、時間の経過とともにスレッド数が増加することに気付きました。バグを修正した後、問題は解決しました。メモリリークは、その最も可能性の高い理由ではないと思いますが、考慮する必要があります。

0
Erkan Erol