web-dev-qa-db-ja.com

visualvmを使用してメモリリークを見つける方法

ActiveMQ接続ブリッジで重大なメモリリークが発生していると思われます-典型的なメモリリークパターンが見られます(アプリが正常にロードされ、長時間実行されるか、短時間で何度も再起動されると速度が低下します) 。 Javaメモリリークを見つけるための最新のベストプラクティスを調べました。多くの開発者は、新しい(er)jvisualvmの代わりにjhat/jmapなどの従来のツールを放棄しているようです。

このツールを起動すると(そしてそのチュートリアルを数時間読んで)、CPUとメモリの両方のプロファイラースナップショットを取得できます。

私はこの時点でちょっと立ち往生しています-これらのスナップショットを分析してリークを特定するにはどうすればよいですか? jvisualvmを使用してスナップショットを作成する方法に関するドキュメントは多数ありますが、実際にそれらを理解する方法に関するドキュメントはほとんどありません。

前もって感謝します。

23
IAmYourFaja

Visualvmを使用したメモリリークの分析はそれほど簡単ではありません。 「sampler」というツール/プラグインがあります。これは、メモリまたはCPUのサンプリングに使用できます。定期的にスナップショットを作成し、潜在的なリークを探すことができます。使用方法の詳細を次に示します- クイック検索から取得

より効果的な方法は、ヒープダンプを取得することです(たとえば、アプリケーションの速度が低下したとき、または OOMが発生したとき )。 VisualVMは、MonitorタブでHeap Dumpを使用してヒープダ​​ンプを取るのに役立ちます)

このファイルは [〜#〜] mat [〜#〜] -で分析できます。詳細は 。hprofファイルの分析方法を参照してください。 ? および http://memoryanalyzer.blogspot.in/

27
Jayan