1

GCViewer パターンに関するチュートリアルはありますか? GC ログ チャートがこのように形成されるという問題がありますが、それがメモリ リークの問題なのか、それとも単にメモリが必要なだけなのかを判断できません。誰でも私を助けてもらえますか?

ログから、「エラー - java.lang.OutOfMemoryError: GC オーバーヘッド制限を超えました」というエラーが表示されました。

ここに画像の説明を入力

4

1 に答える 1

1

メモリ リークがあるかどうかを判断するには、GC チャートを用意するだけでは不十分です。基本的に 2 つの戦略があります。

  1. Memory Leak Detector : 非常に優れたツールの 1 つは、Oracle JRockit Mission Controlを使用することです。メモリ リーク検出機能を使用すると、特定のクラスのインスタンス数をカウントできます。メモリ検出器を実行中の JVM に接続することで、その数値が経時的にどのように変化するかを監視できます。そこで、メモリリークがあるかどうかを確認する必要があります。これらの数値を示すツールのサンプルは、http://docs.oracle.com/cd/E11035_01/jrockit/intro/wwimages/memleak3.gifにあります。
  2. ヒープ ダンプ分析: 一般的に使用されるツールの 1 つは、Eclipse の MAT です。これは、JVM のヒープ ダンプを分析するために使用される Eclipse ベースのアプリケーションです。JDK の一部として提供される jmap を使用して、いつでもヒープ ダンプを取得できます。または、OOM が発生したときに JVM がファイルをダンプするのを待つこともできます。ヒープ ダンプを分析することにより、MAT は何がリークしているのかを合理的に推測できるはずです。また、作成されたオブジェクト (アプリケーション クラスまたはライブラリ クラス) の数とそれらの間の関係も明確に確認できます。この図と、アプリケーションの動作に関する知識から、アプリケーションのどの部分がうまくいかないかを突き止めることができるはずです。

一般的に言えば、最初のアプローチは、開発者と管理者の両方にとってより簡単で直感的です。2 つ目は、JVM とヒープに関する知識がさらに必要です。さらに、JRockit Mission Control はプロダクション JVM のオーバーヘッドが少ないため、最初のものはプロダクション システムで使用できます。

于 2013-10-30T08:29:10.370 に答える