性能问答>JVM垃圾回收mark-sweep算法相关疑惑>
2回复
1年前

JVM垃圾回收mark-sweep算法相关疑惑



mark-sweep算法中,被标记为垃圾的对象,就会被sweep清除。

  1. 那么,这个“清除”这个动作,详细的解释一下它是怎么进行的呢?也就是说,在“清除”的这个过程中,这个对象所在的内存数据,发生了哪些变化呢?

  2. 对于一块内存区域,JVM是怎么知道这块内存是否是可用可分配,没有被其他对象占用的呢?

2858 阅读
请先登录,再评论

比如ygc就是mark-sweep算法,mark就是标记哪些对象是活着的对象,直接进行拷贝到to space或者old space,然后将eden和from space直接clear掉

1年前

如果是使用mark-sweep算法清理,会使用free-list的分配方式:虚拟机维护了一个空闲列表,需要分配空间的时候去查该空闲列表进行分配并对空闲列表做更新,所以把清理的内存加到空闲列表就好了,另外CMS就是用的mark-sweep + free-list😳

1年前