2009-05-06 27 views

答えて

5

JRockit Mission Controlに付属のメモリリーク検出器をEclipse MATと一緒に試してみるとよいでしょう。それは強力な組み合わせです。両方のツールは開発用に自由に使用できます。

JRockit Mission Controlを使用すると、オンラインでヒープを検査し、時間のかかるスナップショットを取ることなく、実際の特定のタイプのオブジェクトを正確に表示できます。ビュー/エディタを閉じた後、エディタ、ビューまたはリスナオブジェクトがヒープ上に残っているかどうかを直接見ることができます。これは通常、あなたのビュー/エディタを保持するフレームワークリスナです。 Windows-> Preferences-> Memory Leak Detector-> Trendに行って、最も低いヒープ使用量を設定して、を0.0に設定してすべてのオブジェクトインスタンスを表示する必要があることを覚えておいてください。

alt text http://download.oracle.com/docs/cd/E11035_01/jrockit/intro/wwimages/memleak2.gif

はMATを使用すると、その後、漏れオブジェクトへの保持しているチェーンを見つけるために、ルートを通すために最短経路を使用することができます。あなたのコードを修正し

alt text http://dev.eclipse.org/blogs/memoryanalyzer/files/2008/04/path2gc_all.png

下記参照し、メモリリーク検出器で確認し、そのオブジェクトであるあなたは、エディタ/ビューを閉じるときに収集ごみ。

3

プロファイリングツールが必要です。

eclipse(wiki,blog)にはMemory Analyzerプロジェクトがあります。

また、TPTPもプロファイリングしているようです。

0

ウィンドウを開いている場合、最も簡単な方法は、単純に例を監視することです。ツールを使用している間、タスクマネージャのeclipse.exeプロセス。 RCP実行ファイルが別の名前を持っている場合は、これを監視する必要があります。 Unixでは、類似のツールを使うことができます(procおそらく?)。

利用可能な最も集中的なタスクを実行します(または、特定の機能が問題の原因と思われる場合は、それらを使用します)。集中的なタスクが完了した後にeclipse.exeが使用したメモリ量が減少しても、リークが発生する可能性があります。これにより、最終的にメモリ不足エラーが発生します。

eclipse.ini(または.ini)の "-Xmx"設定を使用して、アプリケーションで使用可能なメモリー量を減らすことで、メモリー不足エラーを早めることができます。例えば。 -Xmx256mは、最大256メガバイトが利用可能であることを意味します。明らかに、この設定はアプリを実行するのに十分である必要がありますが、設定を低くするとガベージコレクションが頻繁に行われ、リークがより顕著になります。

0

メモリプロファイラが必要です(他にも言及しているように)。適切なツールがあれば、問題を簡単に見つけることができます。我々が使用

http://www.yourkit.com/

を私達のテストのために、それは非常にうまく機能し、開発者が自分のマシン上でローカルに使用できるようにフローティングライセンスがあります。

基本的には、実行している操作のスナップショットを撮ってから、割り当てられたものと解放されていないものを見ます。

編集:追加することを忘れてしまった、このツールはEclipseに正しく統合されています。

1

最も簡単なソリューションはJava JDK:Java VisualVMです。これは、JDK 6更新7.

ので、binディレクトリ(Windowsの下jvisualvm.exe)に位置し

はまた、メモリプロファイラ、ヒープウォーカーとEclipse integrationが含まれています。

https://visualvm.dev.java.net/images/getstarted/vvm-anagram-profiler.png(あまりにも悪い、私がイメージタグを使用することはできませんよ)

https://visualvm.dev.java.net/

を参照してください。
関連する問題