摘要: what: 逻辑上将老年代的内存分成大小一致的卡片(card,一般128个字节),每个用1个标记位来记录,将所有的卡片收集到一起来管理,就构成了表格(mark table)。 当改写引用,是从老年代到新生代的,那么对应card在table中的标记就变为1,即该卡就是dirty card。该过程可以在 阅读全文
posted @ 2021-10-20 17:36 修心而结网 阅读(643) 评论(0) 推荐(0) 编辑
摘要: why: 并发标记标记阶段,应用线程是在run的,就会是并发标记的结果不准,漏垃圾还好,主要是把一下需要使用的对象清理了。 where: 如下图: 并发标记线程在扫描完A后。应用线程将C的引用关系,经过b转换到了c。这时由于A已经扫描(三色扫描)完毕了,不会再扫描标记A,那么C对象就会最终标记为白色 阅读全文
posted @ 2021-10-20 17:23 修心而结网 阅读(139) 评论(0) 推荐(0) 编辑
摘要: what: 分为:空闲列表、碰撞指针; 空闲列表:jvm的内存不是规整的,使用和未使用的内存块都是交错放置的,jvm只能使用“空闲内存表”来管理未使用的内存空间。所有新对象的内存块分配,都从“空闲内存表”来分配。该中内存分配管理方式是“空闲列表”方式。 碰撞指针:jvm的内存是规整的,使用1个指针来 阅读全文
posted @ 2021-10-20 16:10 修心而结网 阅读(99) 评论(0) 推荐(0) 编辑
摘要: whate: 三色标记法,是把内存中的对象,标记为3种颜色,分布是:黑、灰、白。 黑:表示该对象已经扫描到,并且它可触达的对象也已经扫描到; 灰:表示该对象已经扫描到,但是它能触发的对象至少还有一个没有扫描到; 白:表示该节点没有被扫描到; where: CMS的三色标记发生并发标记和重新标记阶段。 阅读全文
posted @ 2021-10-20 15:52 修心而结网 阅读(858) 评论(0) 推荐(0) 编辑