TomcatにはGWTベースのアプリケーションがデプロイされています。アプリケーションはOutOfMemoryExceptionでクラッシュします。だから、私はアプリケーションのヒープダンプを取って、それが最大の割り当てられたメモリを使用することに近づいたときに始めました。メモリリークを見つけるためのGWTアプリケーションのプロファイリング
アプリケーションの動作は、クラスタのセットアップを使用して、サーバー上でananlyzedするアプリケーションへの入力を入力し
- ユーザーログです。
- クライアントは15秒ごとにサーバーをポーリングしてジョブのステータスを確認し、UIコントロールを更新します。ポーリングは、サーバーからデータを取得するrequestfactory呼び出しを使用して行われます。
- ジョブが完了すると、flextableを使用してユーザーに結果を表示します。 6行の1000行程度があります。
ヒープダンプ、
我々はメモリへ保持しているものを見るためにjmapのを使用してTomcatプロセスのヒープ・ダンプを取りました。以下の図は、ヒープ・ダンプを含むEclipse Memory Analyzerを使用して撮影されたものです。
我々は25Kの保持サイズとヒープに保管されているハッシュマップエントリがたくさんあることがわかりますし、約6万人がありますそのうちの。
質問:
- com.google.gwt.core.client.impl.WeakMappingは16 バイトの浅いヒープを示したが、保持ヒープは、我々はアプリケーションのための を割り当てられたほとんどすべてのメモリです。
- 15秒ごとにサーバーをポーリングしていて、何らかの形で参照されていてGCedではないデータを取得しているからですか?
- これらのハッシュマップの参照を解除するにはどうすればよいですか。
- ここで言及したシーンリアーとはまったく異なるものですか?
これまで、アプリケーションの分析にjconsole、jprofiler、MAT、jhatを使用しました。そして、私たちはその問題のどこに手がかりがありません。
あなたのお手伝いをお待ちしております。
私はgwt2.4を試してみます。私はこれに関するいくつかのデータを持っていると更新されます。 – Kathir
rc1にはこれに関する修正がありますか?私はrc1で試していますが、変更があるようには見えません。 – Kathir
[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) –