java - Java 的 G1 垃圾收集器 (G1GC) 中的类卸载

标签 java garbage-collection g1gc

在 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/

相关文章:

java - 使用G1收集器时JVM泄漏内存?

java - 尝试运行 org.hibernate.tool.ant.EnversHibernateToolTask​​ 时遇到很多绊脚石

java - SQLite 到 MS SQL 日期时间

java - 将时间格式化为毫秒,仅显示日期

java - 是否有任何 JVM 不使用分代垃圾收集

c# - 如何以安全的方式获取弱引用的目标

java - 如何使 JFileChooser 返回包​​含正斜杠而不是 java 中的反斜杠的文件或目录路径?

jakarta-ee - 如何在 Oracle JRE 中跟踪方法 System.gc()

java - Hotspot JVM - G1GC 堆大小调整问题

java - 为什么 G1 垃圾收集器卸载时间随着时间的推移而增加?