首先说说他解决的是什么,解决了一个对象被不同区域引用时,避免全局扫描导致降低了Minor GC的效率问题。
一个Region不可能是孤立的,一个Region中的对象可能被其它任意Region中的对象引用,判断对象存活时,JVM使用Remember Set来避免全局扫描来并保证准确性。其它分代收集器也存在这样的问题,G1更为突出一些。
每个Region都有一个对应的Remember Set,每次Reference类型数据写操作时,都会产生一个Write Barrier暂时中断操作;
然后检查将要写入的引用指向的对象是否和该Reference类型数据在不同的Region(其它收集器,检查老年代对象是否引用了新生代对象);
如果不同,通过CardTable把相关引用信息记录到引用指向对象的所在Region对应的Remember Set中;
当进行垃圾收集时,在GC根节点的枚举范围加入Remember Set,就可以保证不进行全局扫描,也不会有遗漏。
Information
- Show
- FrequencyUpdated daily
- Published29 December 2021 at 07:22 UTC
- Length2 min
- Episode4
- RatingClean