Java虚拟机-记忆集的疑问

Posted javashi1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java虚拟机-记忆集的疑问相关的知识,希望对你有一定的参考价值。

看《深入理解Java虚拟机》中传统垃圾收集器(非G1)使用记忆集(Remembered Set)来处理跨代引用时根节点枚举的问题。
里边说到

在新生代上建立一个全局的称为记忆集的数据结构,
这个结构把老年代划分为若干个小块,标识出老年代哪一块内存会存在跨代引用。当发生 Minor GC 时,只有包含了跨代引用的小块内存中的老年代对象才会加入到 GC Roots 中,避免整个老年代加入到 GC Roots 中。

这里有个疑问,也有新生代引用老年代这种跨代引用,不需要在老年代也建立记忆集吗?不然回收老年代也得把整个新生代加入到 GC Roots中。

看书里也有说只有 CMS 垃圾收集器存在单独回收老年代的情况,那其他垃圾收集器是在回收新生代的时候知道的有哪些新生代对老年代的引用吗?

没有记忆集,那 CMS 单独回收老年代的时候是怎么处理跨代引用的?

 

以上是关于Java虚拟机-记忆集的疑问的主要内容,如果未能解决你的问题,请参考以下文章

实现原创指令集的虚拟机

java虚拟机和java内存区域概述

javasecclass文件结构

java架构之路-(面试篇)JVM虚拟机面试大全

揭秘Java虚拟机:JVM设计原理与实现详细资料大全

深入理解java虚拟机字节码指令简介