3

Eclipse RCPアプリケーションのメモリリークをどのように検出できますか?

4

5 に答える 5

6

JRockit Mission Controlに付属の Memory Leak DetectorとEclipse MATを試してみてください。強力な組み合わせです。どちらのツールも無料で開発に使用できます。

JRockit Mission Control を使用すると、時間のかかるスナップショットを作成する必要なく、ヒープをオンラインで検査し、ライブである特定のタイプの正確な数のオブジェクトを確認できます。ビュー/エディターを閉じた後、エディター、ビュー、またはリスナー オブジェクトがヒープに残っているかどうかを直接確認できます。通常、ビュー/エディターを保持するのはフレームワーク リスナーです。Windows->Preferences->Memory Leak Detector->Trend に移動し、Lowest Heap Usageを 0.0 に設定して、すべてのオブジェクト インスタンスを表示する必要があることに注意してください。

代替テキスト
(ソース: oracle.com )

MAT を使用すると、スレッド ルートへの最短パスを使用して、リークしているオブジェクトを保持しているチェーンを見つけることができます。下記参照

代替テキスト http://dev.eclipse.org/blogs/memoryanalyzer/files/2008/04/path2gc_all.png

コードを変更し、エディタ/ビューを閉じたときにオブジェクトがガベージ コレクションされることを Memory Leak Detector で確認します。

于 2009-05-06T21:18:15.613 に答える
3

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

EclipseにはMemory Analyzerプロジェクトがあります ( wikiブログ)。

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

于 2009-05-06T13:46:28.773 に答える
1

最も単純なソリューションには、JavaJDKであるJavaVisualVMが付属しています。

JDK 6 update 7以降、binディレクトリ(Windowsではjvisualvm.exe)にあります。

また、メモリプロファイラー、ヒープウォーカー、およびEclipse統合が含まれています。

https://visualvm.dev.java.net/images/getstarted/vvm-anagram-profiler.png(残念ながら、画像タグの使用は許可されていません)

https://visualvm.dev.java.net/を参照してください

于 2009-05-06T21:36:48.707 に答える
0

メモリ プロファイラーが必要です (他の人が述べているように)。優れたツールがあれば、問題をかなり簡単に見つけることができます。

私たちは以下を使用します: http://www.yourkit.com/

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

基本的に、実行中のアクションのスナップショットを作成してから、割り当てられたがリリースされていないアイテムを確認します。

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

于 2009-05-06T20:53:44.580 に答える
0

Windows を使用している場合、最も簡単な方法は、ツールの使用中にタスク マネージャーで eclipse.exe プロセスなどを監視することです。RCP 実行可能ファイルの名前が異なる場合は、これを監視する必要があります。Unix では、類似のツール (proc かな?) を使用できます。

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

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

于 2009-05-06T13:54:43.027 に答える