我想要将应用程序服务器的Permgen转储。我不想用-XX:+TraceClassLoading -XX:+TraceClassUnloading
,因为我不想重新启动服务器,我也不想使用jconsole
。如何转储Permgen?
我有任何像jmap
(用于堆转储没有找到permgen任何选项)的工具来获取permgen,以便我只能提供pid
。
我想要将应用程序服务器的Permgen转储。我不想用-XX:+TraceClassLoading -XX:+TraceClassUnloading
,因为我不想重新启动服务器,我也不想使用jconsole
。如何转储Permgen?
我有任何像jmap
(用于堆转储没有找到permgen任何选项)的工具来获取permgen,以便我只能提供pid
。
jmap -permstat <pid>
不可能像转储堆那样“转储permgen”。
除了其他人已经介绍的jmap -permstat
之外,您还可以分析标准堆转储,以便在this blog entry: 'The Unknown Generation: Perm'中描述的永久生成代码中提供一些信息。
因为堆转储并不包含大量关于烫发空间的信息,所以烫发问题很难解决。最近,我发现了Sporar,Sundararajan和Kieviet这篇伟大的文章。作者阐明了永久性一代。当然,我必须立即检查是否以及如何使用Eclipse Memory Analyzer来分析这个“未知”代。这是这个博客的内容。
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/[email protected]
0x4f83f670 1 1744 0x4ebfb8e8 dead sun/reflect/[email protected]
[...]
total = 287 10020 35889952 N/A alive=3, dead=284 N/A
这不是一个完全转储,但这样做会允许你做一些调查。
我仍在寻找如何找到更多信息。
这有助于你解决你的问题Vikas? – 2010-11-02 18:48:34
我以前试过这个,它是说无效的选项,并显示只说-histo和-dump(堆转储)的用法是允许的。我使用jdk/bin内的jmap是这个正确的 – 2010-11-03 03:09:20
'permstat '选项在MS Windows上不可用。 – kschneid 2010-11-03 03:26:31