垃圾收集器列表:
我知道,当启用PermGen选项时,Conc标记扫描GC支持清除ClassUnloading。其他垃圾收集器支持清理PermGen吗?
原因:我们使用Spring、Hibernate和Groovy来创建大量代理,Perm变得更大。
编辑:应该提到我正在使用Java 7,我知道Java 8删除了Perm,并希望在将来的某个时候升级。同时,我的问题是,其他垃圾收集器是否支持清除PermGen,而不是Conc标记扫描。
发布于 2015-02-11 04:35:22
所有算法都在清理PermGen,但是
当我为了测试目的在单个进程中积极使用PermGen模拟多个JVM时,我一直在ClassLoaders中与OOME进行大量的斗争。我的结论是: PermGen GC不太可靠。一个运行它按预期工作,另一个它抛出OOEM。
发布于 2020-09-24 16:33:26
perm gen的问题在于它不应该是动态的,它应该是静态数据,比如类和常量。但是我们开发人员使用java所做的是动态创建类、重新定义类等,这需要更动态地使用这个空间,这就是为什么在metaspace情况下,它必须是这样的。
perm的最大问题是创建和销毁类加载器,因为它太容易在ThreadLocals和其他类加载器加载的其他库中泄漏类元数据,并且会留下无法被您使用的任何收集器回收的活动对象。
现在,所有的生产垃圾收集器都清理元空间,但是,它们不一定要以与其他内存区域相同的频率来清理它。
https://stackoverflow.com/questions/28433553
复制相似问题