标记-清扫回收器(编译原理课程展示)湖南大学软件工程陈沅陇基本的标记-清扫式回收器标记-清扫式垃圾回收器是一种直接的全面停顿算法
它们找出所有不可达的对象,并将它们放入空闲列表Free
清扫过程分为标记阶段和清扫阶段
/*标记阶段*//*把根集所引用的对象reached位设置为1,并加入Unscanned集合中*/while(Unscanned
=){∅从Unscanned列表中删除某个对象o;for(在o中引用的每个对象o’){if(o’的reached位为0,即未被访问){将o’的reached为设置为1;将o’放到unscaned中;}}}/*清扫阶段*/free=;∅for(堆区的每个内存块o){if(o未访问到,即它的reached为0)将o加入到Free中;else将o的reached位设置为0;}基本的标记-清扫式回收器堆区o1o2o3o4o5o6o7o8o9UnscannedFree/*标记阶段*//*把根集所引用的对象reached位设置为1,并加入Unscanned集合中*/while(Unscanned
=){∅从Unscanned列表中删除某个对象o;for(在o中引用的每个对象o’){if(o’的reached位为0,即未被访问){将o’的reached为设置为1;将o’放到unscaned中;}}}/*清扫阶段*/free=;∅for(堆区的每个内存块o){if(o未访问到,即它的reached为0)将o加入到Free中;else将o的reached位设置为0;}跳转到清扫后基本的标记-清扫式回收器堆区o1o2o3o4o5o6o7o8o9UnscannedFree/*标记阶段*//*把根集所引用的对象reached位设置为1,并加入Unscanned集合中*/while(Unscanned
=){∅从Unscanned列表中删除某个对象o;for