CMS 有个并发清理阶段,会清理之前被标记的内存。而 WeakReference 每次垃圾回收时都会被标记清除(?是这样吗),如果在并发清理阶段,用户调用了 WeakReference.get() ,并建立起一个强引用,那么会不会出问题呢?
1
liangdu 2019-03-20 09:02:42 +08:00 via Android
纠正一下,gc 标记的是存活的对象,在对象头部的 markword 状态字里面,另外有一个浮动垃圾的概念,你这种说话那 wr 会变成浮动垃圾,浮动垃圾有个重要的 jvm 参数,叫什么忘了,叫什么 initial 什么 occupy 什么来的,就是用来控制 cms 启动的时机(当容量达到多少时就会启动)
|