Jvm 如何卸载Permgen?

Jvm 如何卸载Permgen?,jvm,profiling,permgen,Jvm,Profiling,Permgen,我想转储应用服务器的Permgen 我不想使用-XX:+TraceClassLoading-XX:+TraceClassLoading,因为我不想重新启动服务器,也不想使用jconsole 我没有像jmap(用于堆转储)这样的工具来获取permgen,因此我只能提供pid jmap-permstat jmap -permstat <pid> 无法“转储permgen”,因为它是针对堆执行的 除了其他人已经介绍的jmap-permstat之外,您还可以分析标准堆转储,以了解永久生成,

我想转储应用服务器的Permgen

我不想使用
-XX:+TraceClassLoading-XX:+TraceClassLoading
,因为我不想重新启动服务器,也不想使用
jconsole

我没有像
jmap
(用于堆转储)这样的工具来获取permgen,因此我只能提供
pid

jmap-permstat
jmap -permstat <pid>

无法“转储permgen”,因为它是针对堆执行的

除了其他人已经介绍的
jmap-permstat
之外,您还可以分析标准堆转储,以了解永久生成,如中所述

因为堆转储实际上并不包含很多关于perm空间的信息,所以perm问题很难解决。最近,我发现了Sporar、Sundararajan和Kieveian的这篇伟大的文章。作者们对永久的一代人有了一些了解。当然,我必须立即检查是否以及如何使用Eclipse内存分析器来分析这一“未知”代。这就是这个博客的内容

jmap-permstat
将产生如下输出:

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  
30337个内部字符串,占2746200字节。
类\u加载器类字节父级\u加载器是否活动?类型
2031 7253392空活
0x517474f0 1 1760零死太阳/反射/DelegatingClassLoader@0x43f95d38
0x4f83f670 1 1744 0x4ebfb8e8死光/反射/DelegatingClassLoader@0x43f95d38
[...]
总计=287 10020 35889952 N/A存活=3,死亡=284 N/A
这不是一个完整的转储,但这样做将允许您进行一些调查


我仍在寻找如何找到更多信息。

这有助于您解决问题吗?Vikas?我之前尝试过这一点,它表示该选项无效,并显示用法,其中仅显示-histo和-dump(堆转储)允许。我正在jdk/bin中使用jmap这是正确的吗
permstat
选项在MS Windows上不可用。
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