探究JVM(三) 经典收集器的记忆集

引言:基于经典分代理论,虚拟机的堆内存可以划分成新生代,老年代。当虚拟机需要仅对新生代进行回收时(Minor GC),新生代中可能存在跨代引用,即老年代的对象中有指向新生代对象的引用。为此,正常情况下需要扫描整个老年代来确定哪些对象引用了新生代的对象,但这种方式的开销太大,所以JVM引入了记忆集的概念,采用记忆集的方式,能有效减小开销。

G1收集器出现之前的记忆集

首先,我们要了解记忆集(Rset)的概念,下面是ORACLE官方对于记忆集的解释
The data structure for keeping this information (old generation pointers to young generation objects), is a remembered set. A card table is a particular type of remembered set.
根据ORACLE官方的说法,记忆集是记录着从老年代向新生代引用的一种数据结构,Card Table是其中一种特殊的记忆集。在G1收集器出现之前,Card Table是解决跨代引用的实际方案。

如上图所示,把老年代划分成若干个卡页,而卡表是以字节为单位的数组,通过卡的索引index来对应卡页,每一个数组元素对应一个卡页,卡页的大小为512字节(HotSpot实现)。卡页中可能存在多个对象,但是只要当卡页中存在一个对象引用了新生代的对象&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值