一文讲清跨代引用问题

一、跨代引用问题

假设老年代的 A 对象引用新生代的 B 对象,那在 young GC 的时候,仅仅从新生代的 GC root 出发就会以为 B 是垃圾,导致错误回收,而如果从整个 GC root 出发遍历成本就太高了。因此用记忆集来解决这个问题,在记忆集中保存从非收集区域(A 所在的老年代)指向收集区域(B 所在的新生代)的指针集合,在 young GC 的时候,将记忆集中保存的指针对象加入到 GC root 中进行扫描即可。

二、记忆集具体实现方式

三、怎么在编译时进行卡表元素的维护?写屏障

在虚拟机层面对“引用类型字段赋值”这个动作的AOP切面!相当于 Around 通知。在赋值后将对应卡表元素变脏(1)就是一个写后屏障,注意这个写屏障和 JMM 中的内存屏障不同

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇