2017-09-29 5 views
1

ループ内で500オブジェクトを削除している間に、「java.lang.OutOfMemoryError:GCオーバーヘッドの上限を超えました」というエラーが発生しました(1つのトランザクションのみ)。私は自分のコードを検証し、すべてのオブジェクトが逆参照されていることを確認しました。私もヒープサイズを増やそうとしていたので、同じエラーが出ます。 どのオブジェクトがより多くのメモリを消費しているかを知るために、私は "JProfiler"と "visualvm"を使いました。より多くのメモリを消費するeclipseリンク(2.5.2)のクラスである "ChangeObjectSet"も、同じエラーを受けているEclipseリンクの新しいバージョンで試しました。java.lang.OutOfMemoryError:GCオーバーヘッド制限を超過しました。Java

スタックトレース:

Stacktrace

はあなたが提供することができます任意の助けを事前にありがとうございます。

+1

メモリプロファイリングは完了しましたか?それがなければ、推測しかできない。 –

+1

gcについて知っておいていいことは...あなたがそれを期待しているか実行しているという理由だけで、実際に実行されるわけではありません。それは、VMがそうでないと判断したときに実行されます。 – Stultuske

+0

メモリ不足です。簡潔でシンプル。あなたのリークがどこにあるかを調べる。 –

答えて

0

Eclipse IDEの基本的なメモリ割り当ては小さなプロジェクトの場合にのみ有効です。巨大なプロジェクトをEclipse IDE(巨大なデータからなる)にロードすると、Eclipseがメモリ不足になりエラーが発生します。

Here is a link私のために働いていた...試してみてください。

+0

私はすでにこれを試していましたが、ループ回数を増やせば失敗するでしょう。 –

+0

それ以上のメモリを与えますか?あなたのタスクマネージャを開いて、どれだけのメモリを利用しているかを確認して、知ることができます。まだそれがいっぱいであれば、それ以上に増加してください –

+0

それは毎回のメモリを増やすより良い方法ではありません!要件ごとにループ数が増加し、メモリが制限されます。 –

関連する問題