cms垃圾收集器,并发清理阶段,是如何避免新的对象被回收掉的?

问题描述

cms垃圾收集器,并发清理阶段,是如何避免新的对象被回收掉的?
并发清理阶段,用户线程如果在老年代分配了大对象,这个对象肯定没被标记为可达,怎么避免这个对象被回收的?

阅读 5.9k
2 个回答

在并发清理阶段,和用户线程同时运行,你的意思是又创建了新的对象,这些对象如果避免被清除的么?
首先清理阶段,主要就是清除没有被引用的对象,这些在前面标记、重新标记的对象,你新创建的对象本身就不在清理的范围之内,在清理过程中只是会有浮动的垃圾而已。

分配内存的时候,指针也进行了修改,通过CAS保证原子性,所以这个对象是可达的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题