6

JavaでMVC webappを作ったのですが、1日1回実行するとメモリエラーでまた落ちてしまいます。

このエラーは次のとおりです: Exception in thread "http-apr-12136-exec-42" java.lang.OutOfMemoryError: Java heap space

java.sql.SQLException: java.lang.OutOfMemoryError: Java ヒープ領域

クラッシュの統計情報を含む hprof があります。具体的にどのようにメモリが使用されているかを示しています。Eclipse メモリ アナライザーで hprof を開くと、次の結果が得られます。

rar: https://mega.co.nz/#!Ht41xJDJ!MooePBSv5yOYSNN5OuvF7Afn2rcN-KJ2tXGSsgqtsaI

またはフォルダー内: https://mega.co.nz/#F!6hJUyKbQ!D_Kb23E3KfAJqcd5EeAt0A

概要レポートには、次の図 (OverviewEMA.JPG) があります。この図の内容がわかりません... わかりません。

2 番目のタブであるデフォルト レポートには、次の図 (DefaulReport_EMA.JPG) があります。問題は「org.hibernate.internal.SessionFactoryImpl」の 1 つのインスタンスである可能性があると表示されます。しかし、そのインスタンスを解決する方法がわかりません。

次のタブで。ドミネーター ツリーには、約 42MB のメモリを使用する前のインスタンスが再び表示されます (最初の図と同じ)。画像はDominatorTree_EMA.JPGです

最初のクラス (問題を引き起こすクラス) を展開すると、次の図 (DominatorTreeExpanded_EMA.JPG) が表示されます。

次のタブのヒストグラムでは、グラフィックは次のとおりです (Histogram_EMA.JPG):

Unreachable オブジェクトでは、結果は次のようになります (UnreachableObjects_EMA.JPG):

この最後の2つのグラフィックがよくわかりません

最後に、Java VisualVM のレポートもあります。この結果 (Heapdump_JVM.JPG) があります。

この図によると、Integer および String オブジェクトに加えて、HashMap オブジェクトが問題です。Hashmapオブジェクトは、クラスがjspファイルに送信するモデルのオブジェクトであり、JPAオブジェクト(Hibernateのオブジェクト)から進んでいるため、問題はこれである可能性がありますが、解決方法がわかりません...

誰かが私を助けることができますか?どうすれば修正できるか知っている人はいますか?もっと情報が必要ですか?

ありがとう!

4

3 に答える 3

1

申し訳ありませんが、行間で書くことができないので、新しい回答を書きます。

問題は、あなたの回答のコメントに以前入れたテキストである可能性がありますか? このように Classes Controller を宣言します。

@Controller
public class HelloController {

    @RequestMapping(value="/hello.htm")
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

私が何度も作成するオブジェクトは、あの HttpServletRequest と Response? それとも別ですか?

SessionFactory を作成する場所がわかりません。

もう 1 つの考えられる場所は Dao で、すべての Dao でこのようなエンティティ マネージャーを宣言します。

@Repository(value = "contratoDao")
public class JPAContratoDao implements ContratoDao {

    private EntityManager em = null;

    /*
     * Sets the entity manager.
     */
    @PersistenceContext
    public void setEntityManager(EntityManager em) {
        this.em = em;
    }

これのいくつかが問題になる可能性がありますか?

再度、感謝します!

于 2013-07-24T19:29:22.377 に答える