2011-07-27 3 views
1

TomcatにはGWTベースのアプリケーションがデプロイされています。アプリケーションはOutOfMemoryExceptionでクラッシュします。だから、私はアプリケーションのヒープダンプを取って、それが最大の割り当てられたメモリを使用することに近づいたときに始めました。メモリリークを見つけるためのGWTアプリケーションのプロファイリング

アプリケーションの動作は、クラスタのセットアップを使用して、サーバー上でananlyzedするアプリケーションへの入力を入力し

  • アプリケーションに以下、

    1. ユーザーログです。
    2. クライアントは15秒ごとにサーバーをポーリングしてジョブのステータスを確認し、UIコントロールを更新します。ポーリングは、サーバーからデータを取得するrequestfactory呼び出しを使用して行われます。
    3. ジョブが完了すると、flextableを使用してユーザーに結果を表示します。 6行の1000行程度があります。

    ヒープダンプ、

    我々はメモリへ保持しているものを見るためにjmapのを使用してTomcatプロセスのヒープ・ダンプを取りました。以下の図は、ヒープ・ダンプを含むEclipse Memory Analyzerを使用して撮影されたものです。

    Overview of the heap dump

    Domiator Tree

    Dominator Tree

    Expanded dominator tree

    我々は25Kの保持サイズとヒープに保管されているハッシュマップエントリがたくさんあることがわかりますし、約6万人がありますそのうちの。

    質問:

    1. com.google.gwt.core.client.impl.WeakMappingは16 バイトの浅いヒープを示したが、保持ヒープは、我々はアプリケーションのための を割り当てられたほとんどすべてのメモリです。
    2. 15秒ごとにサーバーをポーリングしていて、何らかの形で参照されていてGCedではないデータを取得しているからですか?
    3. これらのハッシュマップの参照を解除するにはどうすればよいですか。
    4. ここで言及したシーンリアーとはまったく異なるものですか?

    これまで、アプリケーションの分析にjconsole、jprofiler、MAT、jhatを使用しました。そして、私たちはその問題のどこに手がかりがありません。

    あなたのお手伝いをお待ちしております。

  • 答えて

    3

    トランクと2.4ブランチで修正されたmemory leak in WeakMappingがありました。

    +0

    私はgwt2.4を試してみます。私はこれに関するいくつかのデータを持っていると更新されます。 – Kathir

    +0

    rc1にはこれに関する修正がありますか?私はrc1で試していますが、変更があるようには見えません。 – Kathir

    +0

    [RC1](http://code.google.com/p/google-web-toolkit/source/detail?r=10464)は、[修正](http: /code.google.com/p/google-web-toolkit/source/detail?r = 10344) –

    関連する問題