在 Java 6 中,我们曾经使用以下 GC 配置来防止在多次重新部署我们的应用程序后出现 Perm Gen OutOfMemoryException
:
-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled
我们正在迁移到 Java 7 并希望使用新的 G1 GC,根据我的阅读,它将类从 Java 内存中的 PermGen 移动到 native 内存。
是否有一些标志可以启用卸载未使用的类?
最佳答案
G1 在 Full GC 期间执行类卸载,因此您无需指定任何参数即可启用此功能。
您可以使用 -XX:+TraceClassUnloading
参数亲眼看看。
此外,请查看 HotSpot GC 邮件列表中的此电子邮件线程:Bug in G1GC it performs Full GC when code cache is full resulting in overkill .他们非常广泛地讨论了 G1 中的类卸载。总之,如果您发现类卸载有问题,您可以使用 -noclassgc
,但通常 G1 中的类卸载没有问题。
关于java - Java 的 G1 垃圾收集器 (G1GC) 中的类卸载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18960493/