【java】垃圾收集器|g1收集器

作者: free-coder分类: 校园学习 发布时间: 2019-09-22 00:16:31 浏览:35525 次

【java】垃圾收集器|g1收集器

39094626737_bili:
标记的对象是要留下来的,没有标记的是要清理的。视频中有些地方说错了

【回复】回复 @afewr3 :有毛病 举报了
【回复】Mark-Sweep:标记的是不需要回收的对象,在标记完成之后会回收掉没有被标记的对象
蜜汁能量:
看了网上的文章看了很多,都不是很懂,看了Up主的视频,懂了。非常感谢up主

【回复】SpringBoot如何搭配Redis实现互联网高并发?例如高并发微信签红包,淘宝高并发直播弹幕 等等 https://www.bilibili.com/video/BV1GV411U78a
【回复】《Java虚拟机 JVM性能调优+面试+实战》: https://www.bilibili.com/video/BV1854y1H7nR 吓得我立马关注了,怎么样算不是白嫖159472
老不死的冬冬侠:
遍历所有old区/或者阴影部分的old区,看看是否能连上GC Root, 但是三色标记不是从GC Root往下么 有点不懂。

qie_3480471549:
有点瞎扯了,SATB是G1对于漏标的处理方案,增量更新是CMS对于漏标的处理方案,SATB效率更快是因为CMS中使用的增量更新,在重新标记阶段,除了需要遍历 写屏障的记录,还需要重新扫描遍历GC Roots,这是由于CMS对于astore_x等指令不添加写屏障的原因

是三叁呀:
您好up主,视频讲的非常好! 有一个问题还麻烦请教一下您: 第一步是标记GC Root直接引用的对象及其Region,记为Root Region 第二步是通过Root Region在old找到含有Root Region的区域,然后再标记的区域中进行遍历; 是不是可以这样理解: 第一步找出的Region已经排除了与GC Root不相连的Region(里面的对象是需要清理的) 第二步是在包含相连Region的Old中找到不相连的对象(同样需要清理的),而不包含Root Region的说明根本不与GC Root相连(需要清理) 因此这两步合起来就找到了所有需要GC的对象(其实是由3部分组合而成的?)

biubiubilibiki:
做科普up主很多,up主还是做些有深度的吧[呲牙]

风流倜傥猥琐帝:
你好,up主,我想请问下11分41秒Eden区和from区存活下来的对象到了to区,那么to区满了之后是直接变成old区吗

【回复】白皮书https://www.oracle.com/technetwork/java/javase/tech/memorymanagement-whitepaper-1-150020.pdf第八页有如下内容: Note: If the To space becomes full, the live objects from Eden or From that have not been copied to it are tenured, regardless of how many young generation collections they have survived. 我查了下oracle文档中经常把tenured称为老年代,所以你说的应该没错。g1中应该是沿用了这种做法,g1的文档中没有对该部分的特殊说明,推测和之前的serial等保持一致的处理方式了。
【回复】回复 @风流倜傥猥琐帝 :大体瞄了一眼你给的链接,是再现ygc这个过程吗?你有配置堆大小吗?我好想也有期简单的工具介绍的,av67517767。
【回复】回复 @free-coder :好的谢谢 想问下你用过jvisualvm吗?我用这个做测试时第一次测试和下面的视频是一样的,但是我重新运行这个类或者新建一个运行结果和第一次不太一致, https://www.bilibili.com/video/av57841295/?p=4 第四篇的7分16秒
LicymniusofChios:
大佬你github上图片没了,不知道是不是我这里问题

疯狂的戴司:
关于region如何记录被谁引用了,我个人理解是,一个region(1m)可以拆分成一堆card(512byte),还有一个对应的rset。假如region1被region2引用了,那region1的rset就会记录region2引用对象的所在card的地址,这样就能通过rset找到引用我的对象的地址。

玉面笑笑生:
三色标记并发处理没有说,有一些概念也是一掠而过,在出一期吧[doge]

java cms g1 gc jvm

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!