首页 新闻 搜索 专区 学院

java中satb和tlab有什么区别?

0
悬赏园豆:5 [已解决问题] 解决于 2020-10-09 11:17

java中satb和tlab有什么区别?#福大大架构师每日一题#

< >
分享
最佳答案
0

卧槽,不知道为什么会问出这样的问题,这两个东西毫无瓜葛放在一起问有些咬文嚼字了。不过还是要回答一下,万一对别人有用呢。

1.satb的全称是snaphot at the begining,是G1垃圾收集器在并发标记时为了避免出现漏标而采用的一种算法,细节是刚开始有一个快照,A引用B,当A指向B的引用消失的时候要把这个引用push到堆栈,保证B还能被GC扫描到,最重要的是要把这个引用push到堆栈,是灰色对象指向白色对象的引用,如果一旦某一个引用消失就会把它放进堆栈,因此还是可以扫描到它,这样白色的C就不会被漏标了.

2.tlab的全称是 Thread Local Allocation Buffer,JVM 默认给每个线程在 Eden 区中开辟一个 buffer 区域,默认占用 1%Eden 的空间,用来加速对象分配

收获园豆:5
天门道人 | 菜鸟二级 |园豆:249 | 2020-10-09 11:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册