垃圾收集者名单:
- 串行GC
- 并行气相色谱
- 并行旧GC
- 浓缩标记扫描GC
- G1 GC
我知道当您启用 ClassUnloading JVM 选项时,Conc Mark Sweep GC 支持清理 PermGen。其他垃圾收集器是否支持清理 PermGen?
原因:我们使用 Spring、Hibernate 和 Groovy 创建了大量代理,并且 Perm Gen 变得很大。
编辑:
应该提到我正在使用 Java 7。我知道 Java 8 删除了 Perm Gen,并希望在将来的某个时候进行升级。与此同时,我的问题是除了 Conc Mark Sweep 之外,其他垃圾收集器是否支持清理 PermGen。
- 串行GC
- 并行GC(相信-server默认使用它并确认它清理了perm gen)
- 并行旧GC
- Conc Mark Sweep GC(可以使用 JVM 标志清理 perm gen)
- G1 GC
所有算法都在清理 PermGen,但是
- 并非每个 GC 周期都包括 PermGen 清洁
- CMS可以清理PermGen同时,G1一直要求停止世界 Full GC卸载类(干净的 PermGen)直到 Java 8u40
- Java 8 有元空间而不是 PermGen,但它也需要垃圾收集(否则你会在元空间中得到 OOME)
当我积极使用 ClassLoaders 在单个进程中模拟多个 JVM 进行测试时,我在 PermGen 中与 OOME 进行了相当多的斗争。我的结论是:PermGen GC 不太可靠。一次运行它按预期工作,另一次运行它抛出 OOEM。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)