22

アプリケーション サーバーの Permgen のダンプを取得したいと考えていました。

サーバーを再起動したくないので使用-XX:+TraceClassLoading -XX:+TraceClassUnloadingしたくありません。どちらも使用したくありませんjconsole

私は(ヒープダンプに使用されたpermgenのオプションが見つかりませんでした)のようなツールをjmap使用してpermgenを取得し、pid.

4

3 に答える 3

17
jmap -permstat <pid>

次のような出力が生成されます。

30337 intern Strings occupying 2746200 bytes.
class_loader    classes bytes   parent_loader   alive?  type

<bootstrap> 2031    7253392   null      live    <internal>
0x517474f0  1   1760      null      dead    sun/reflect/DelegatingClassLoader@0x43f95d38
0x4f83f670  1   1744    0x4ebfb8e8  dead    sun/reflect/DelegatingClassLoader@0x43f95d38
[...]

total = 287 10020   35889952        N/A     alive=3, dead=284       N/A  

これは完全なダンプではありませんが、そうすることで調査を行うことができます。

私はまだ詳細を見つける方法を探しています。

于 2011-05-25T19:59:12.993 に答える
13

ヒープに対して行われるため、「permgenをダンプする」ことはできません。

jmap -permstatの人が提示したように、このブログエントリ「TheUnknown Generation:Perm」で説明されているように、標準のヒープダンプを分析して、永続的な世代に光を当てることができます。

ヒープダンプにはパーマスペースに関する多くの情報が実際には含まれていないため、パーマの問題に取り組むことは困難です。最近、Sporar、Sundararajan、Kievietによるこの素晴らしい記事を見つけました。著者は、恒久的な世代にいくつかの光を当てました。もちろん、Eclipse Memory Analyzerを使用してこの「未知の」世代を分析できるかどうか、またどのように使用できるかをすぐに確認する必要がありました。これがこのブログの内容です。

于 2010-12-17T15:37:41.050 に答える
1
jmap -permstat <pid>
于 2010-11-02T17:48:53.543 に答える