PERM的Java区域

时间:2011-03-22 04:13:32

标签: java

垃圾收集是否发生在Java堆的PERM Area中?

PERM区域用于存储有关类,方法,变量等的元数据... 还有在堆的PERM区域创建的字符串池,所以我相信这里不会发生垃圾收集?

2 个答案:

答案 0 :(得分:3)

每次部署时,新的类对象都会被放入PermGen中,从而占用不断增加的空间。无论你制作PermGen空间有多大,它都将在经过足够的部署后不可避免地达到顶峰。你需要做的是采取措施冲洗PermGen,以便你可以稳定它的大小。有两个JVM标志可以处理这种清理:

-XX:+CMSPermGenSweepingEnabled

此设置包括垃圾收集运行中的PermGen。 默认情况下,PermGen空间永远不会包含在垃圾收集中(因此无边界地增长)。

-XX:+CMSClassUnloadingEnabled

此设置告诉PermGen垃圾收集扫描对类对象执行操作。默认情况下,即使在garabage集合期间访问PermGen空间时,类对象也会获得免除。

答案 1 :(得分:0)

我认为理论上如果一个类加载器被垃圾收集,那个类加载器加载的类可以被垃圾收集。这些类将在永久世代中。