我怎么知道你是什么时候的垃圾?
性分析算法。 借助“三色标记”大法分析了垃圾回收线程扫描的过程中,用户线程同时执行修改引用关系的操作时,可能会出现的“对象消失”问题,以及其对应的两种解决方案 增量更新和原始快照。 在文章中我写道:对象关系图的变化会导致出现两种情况一是“浮动垃圾”,二是“对象消失”。大概率的情况下面试官更加关心第二种情况,因为第二种情况会给程序带来异常。接下来我就做动图分析了“对象消失”的情况。 但是我是万万没想到呀,读者更关心的是“浮动垃圾”。有的读者就来问我,浮动垃圾是怎么产生的,你倒是给个图啊。 像我这样的又暖又有料的硬核原创作者,你说你要,那我肯定是要给你的。
下面就给你补上“浮动垃圾”的动图: G1垃圾回收时新对象怎么处理? 有的读者就提出了另外的很有探讨性的问题: why哥你好,你《面试官:你说你熟悉jvm?那你讲一下并发的可达性分析》这篇文章主要解决了在并发标记阶段,GC线程和用户线程并发执行时,用户线程修改了对象引用关系,导致“对象消失”的问题。G1是采用原始快照加写前屏障的方式解决这个问题的。 但是我还有另外的一个问题:用户线程执行时不仅修改了对象引用关系,还新分配了新对象,我觉得这个情况是非常常见的,G1是如何找到并处理这些对象的呢? 换句话说,就是文章标题啦:G1收集器是怎么知道这些对象是什么时候应该进行垃圾标记的? 这是一个好问题,一看就是用心读了文章并带有自己的思考。很不错。 这位读者的问题属于第一个问题的连环炮,让我突然有了一种掉进了面试官布好的天罗地网里面的感觉。
面试官先故意漏出破绽,让你聊“对象消失”、“三色标记”、“增量更新”。然后等你得意洋洋的时候,突然抛出第二个问题:刚刚对象消失的问题回答的不错,那如果并发标记的时候用户线程分配了新对象,G1是怎么处理的呢? (编辑:长春站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |