G1收集器的GC Root跟Root RegionScan 以及RememberSet作用
1 G1 初始化标记后为什么要弄一个Root RegionScan呢,网上的资料不是特别的理解
2 RememberSet
RememberSet的作用是维护跨分区的引用,RootScan本身就能扫描到所有的分区引用,为什么还要用RememberSet呢,
小编查了很多资料都没有靠谱的解释,深入理解JVM里也没有合理的解释,只是几句话就带过了,大佬们有思考过这个问题么。
有一篇文章倒是稍微描述了下,说是年轻带代回收的时候不需要去扫描老年代,使用RememberSet就可以不去扫描老年代,将Rset中维护的
对象加入Root对象进行scan
小编的疑惑是
从GC ROOT对象出发的话深度搜索到老年代的对象怎么处理,是直接跳过不进行标记,本次scan中断,然后从Rset中找到老年代的对象去进行追踪?
希望有大佬能解惑
相关推荐
G1&ZGC垃圾收集器详解[可运行源码]
本文详细介绍了G1和ZGC两款垃圾收集器的核心原理与特性。G1是一款面向大内存服务器的垃圾收集器,采用Region分区设计,通过标记-复制算法实现高吞吐量与可控停顿时间。其核心流程包括初始标记、并发标记、最终标记和筛选回收四个阶段,支持动态调整新生代占比(5%-60%),并提供了丰富的参数配置选项。ZGC是JDK11推出的低延迟收集器,通过指针着色技术和NUMA优化实现亚毫秒级停顿,支持TB级堆内存。其核心流程分为标记和转移两阶段,采用读屏障解决并发转移时的指针重定位问题。文章还对比了两者的适用场景:G1适合8GB以上堆内存且停顿容忍500ms内的场景,ZGC则适用于超大堆或要求99.99%响应低于100ms的高SLA场景。最后给出了收集器选型建议和关键参数调优方法。
G1收集器详解(转载)
CMS垃圾收集器的弊端:会产生内存碎片 && 需要预留空间。这两个问题在处理时,很有可能会导致停顿时间过长,即CMS的停顿时间不可预知。所以G1又可以理解为在CMS垃圾收集器上进行了"升级"。
Java GC 专题
NULL 博文链接:https://seanzhou.iteye.com/blog/2003941
Java GC Root解析[项目代码]
本文深入探讨了Java垃圾回收中的核心概念GC Root(垃圾回收根节点),详细解析了其定义、类型、工作机制及实际应用场景。GC Root作为垃圾回收器判断对象存活的基准锚点,通过可达性分析算法识别并回收不再被使用的对象。文章首先介绍了GC Root的核心定义与作用,解释了其在避免内存泄漏和高效内存管理中的重要性。接着,详细列举了GC Root的具体类型,包括虚拟机栈中的本地变量引用、方法区中的静态变量引用、JNI引用等。随后,深入剖析了GC Root在垃圾回收中的工作机制,包括标记阶段、清除阶段和优化机制。最后,文章总结了与GC Root相关的常见问题及实践要点,如内存泄漏的检测与避免方法,以及不同垃圾回收器中GC Root处理的差异。通过理解GC Root,开发者可以更好地掌握Java内存管理机制,编写高效且内存安全的代码。
java垃圾回收(gc)机制详解.pdf
哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无非就是那些不可能再被任何途径使用的对象。


