Java Heap 的 PERM Area 中是否发生垃圾回收?

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

最佳答案

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

-XX:+CMSPermGenSweepingEnabled

此设置包括垃圾回收运行中的 PermGen。 默认情况下,永久代空间从不包含在垃圾收集中(因此会无限增长)。
-XX:+CMSClassUnloadingEnabled

此设置告诉 PermGen 垃圾收集清除对类对象采取行动。默认情况下,类对象获得豁免,即使在垃圾回收期间访问 PermGen 空间也是如此。

关于java - Java的PERM区域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5386717/

10-12 01:40