2016-11-30 9 views
1

私のアプリケーションに問題があります。私がページを開こうとすると、アプリケーションはjava.lang.OutOfMemoryError: Java heap spaceのエラーを発生させます。Eclipse Memory Analyzer:java.lang.OutOfMemoryError:Javaヒープスペース

私たちは、フレームワークとしてStruts2、サーバーとしてTomcat 6、データベース接続用にOpenejbを使用しています。

なぜ私はEclipseエクステンションのMemory Analyzerでメモリが不足しているのか調べようとしましたが、わかりやすいとは言います。

ここ

はメモリアナライザのレポートです:

Top consumers Description Shortest Paths to the accumulation point Accumulated Objects in dominator tree

私はこのエラーを発生させるかについて、本当によく分からないが、それは、データベース接続が閉じていない可能性があるとこの接続を含むマップは、JVMにとって大きなものになりつつあります。

私はJVMにさらに多くのメモリスペースを与えることでこの問題を解決しますが、この問題を解決するには良い方法であるかどうかはわかりません。

誰でも手伝ってもらえますか?

おかげで

+0

物事が変わるのがよく分かります。アプリケーションが実際の作業を行っているときに何が起こるかを見るには、tomcatインスタンスにvisualvmを付けることを検討してください。 –

+0

このトピックは便利かもしれません:http://stackoverflow.com/questions/29590527/how-to-analyze-mat-with-eclipse – Berger

答えて

0

あなたのスナップショットによると、あなたの問題はjavadocのに応じですWebappClassLoaderの分野resourceEntriesから来ている:つまり

The cache of ResourceEntry for classes and resources we have loaded, keyed by resource name.

、それがすべて格納しますキャッシュですあなたがたくさんのjarファイルを持っているときに非常に遅くなる可能性があるので、各呼び出し時にクラスパス全体をスキャンするのを避けるために、WebアプリケーションのClassLoaderを通してロードされるすべてのリソースファイルとクラスのメタ情報。

私がthe source codeから見る限り、あなたのヒープサイズを増やすことを除いて、それを回避する方法はあまりありません。

+0

私の問題は解決していませんか?私はメモリのJVMヒープを防ぐことはできません。それはちょうど私が許可されたメモリのために多くのデータを読み込もうとするからです。 –

関連する問題