5

jmap -heap は、次のような出力を提供します。

New Generation 使用率 100%、Eden Space 使用率 100%、From Space 使用率 100%、To Space 使用率: 0%、Perm Generation 使用率: 38%

これは 100% New, Eden, From space - 問題ですか?

私の JAVA OPTS は次のとおりです。

クイックガベージコレクションがたくさん見られます。ただし、JConsole などのツールを使用してもメモリ リークは発生しません

メモリ使用量は、http: //tinypic.com/view.php?pic=wo213&s=6で確認できます。

JDK 1.6 が使用されています。

4

3 に答える 3

6

それが世代別コレクションの仕組みです。若いスペース (eden、from、to) と古いスペース (tenure、perm) があります。若いスペースは小さいです。若いスペースがいっぱいになると (あなたの場合)、マイナー GC (若い GC) と呼ばれるものが発生します。

ただし、マイナー GC は高速である必要があります。古いスペースがいっぱいになると、完全な GC が発生します (これには時間がかかります)。

アイデアは、高速マイナー GC の頻度を増やし、フル GC の頻度を大幅に減らすことです。

この記事でより詳細な説明を読むことができます

于 2012-06-29T03:18:02.757 に答える
3

次の2つのコマンドが非常に便利であることがわかりました

jstat -gc

また

jstat -gcutil
于 2012-06-28T14:23:15.020 に答える
-1

メモリリークもチェックするのが賢明かもしれません。visualVM またはその他のツール (Eckipse メモリ アナライザーなど) を使用して、プロセスにアタッチします。

何がリークしているのかがわかれば、次のようなオブジェクトへの参照を保持しているものを見つけることができます。

jmap -dump:live,file=heap.dump.out,format=b <pid>

jhat heap.dump.out

また、これはどの JVM バージョンであるか、GC に渡したパラメーターなども不思議です。

于 2012-06-28T14:31:00.567 に答える