-XX:+UseConcMarkSweepGC
-XX:-UseParNewGC
那么,我们是否可以仅使用-xx:+useConcMarkSweepgc
选项运行JVM?我的意思是没有任何为年轻一代描述垃圾收集器的选项。如果我们能那样做,哪一个垃圾收集器将用于老一代?
根据这篇博客文章:
注意,在最近的JVM版本中,当设置-xx:+useparnewgc
时,-xx:+useConcMarkSweepgc
会自动启用。因此,如果不需要并行年轻一代GC,则需要通过设置-xx:-useparnewgc
来禁用它。
对于命令行组合的简明摘要,您可能也对此概述感兴趣。
如果我错了,请随时指正。在JVM堆中,有老一代和年轻一代两代。在做全GC时,在老一代中,有像紧凑空间和修复漏洞这样的繁重操作,这会使JVM挂起。而我发现在年轻一代中,应用了一个轻量级的GC,从我的搜索结果中还有一个叫做Eden的区域涉及年轻一代。但是,在搜索了很多文档后,我对年轻一代中的GC仍然有两个困惑, 在年轻一代中,GC似乎不像老一代GC那样工作(即老一代GC压缩并修复漏洞)?如果是这样,年
问题内容: 当伊甸园空间年轻时已满,将触发次要GC。在次要GC过程中,伊甸园和一个源Survivor空间中的非自由对象将被复制到另一个目标Survivor空间。 我的问题是,如果目标“幸存者”空间已满,次要GC如何处理? 问题答案: 如果不可能执行/完成次要收集,则将执行主要/完整收集。通常使用标记扫描紧凑算法而不是复制算法来完成此操作……这是完整收集昂贵的原因之一。 但是最终(如果您继续填充堆)
我在尝试理解垃圾收集机制,我在研究代际算法,我有一个关于年轻人和老年人的代沟的问题。我读到,在年轻一代开始收集物品,GC是从GC根开始标记它们,以找到活的,通常它会将它们复制到幸存者空间,清除年轻一代区域,然后瞧。 我不明白,如果我们从GC根开始,我们开始遍历活动对象,我们不是也在旧一代中找到了对象吗?这是否意味着,当我们击中旧空间中的一个物体时,我们会在那个点上停止跟踪参照物?
据我所知,CMS collector收集老一代,它与ParNew collector(用于收集年轻一代)一起工作。对我来说,要清楚地理解CMS是如何工作的并不容易,但以下是我的看法: 1)初始标记。寻找根引用。由于收集器是旧的收集器,它应该只扫描旧的一代。 2) 并发标记找到所有根引用后,是时候开始并发标记了。从第一阶段中标记的对象可传递到达的所有对象都在该阶段中标记。 3) 并发预清理gc查看C
这里有我的GC.log的摘录: 2013-02-28T12:02:13.209+0100:1486457.849:[GC 1486457.850:[ParNew 3483368K->96838K(3774912K),0.2273030秒]8085678K->4710336K(49912256K),0.2278070秒][times:user=1.54 sys=0.01,real=0.23秒] 20
当伊甸园空间充满年轻一代时,小GC将被触发。在次要GC过程中,伊甸园和一个源幸存者空间中的非自由对象将被复制到另一个目标幸存者空间。 我的问题是,如果目标幸存者空间已满,minor GC如何处理?