- 博客(2)
- 收藏
- 关注
原创 CMS垃圾收集器分析
CMS(Concurrent Mark Sweep)收集器是用于收集老年代的收集器,采用标记清除算法,下面这张图很好的解释了CMS的执行过程:一共可以划为4步:1)初始标记,这一步很快,只是标记一下GCROOTS中能直接关联到的对象 2)并发标记,这一步就是遍历对象图的过程,比较耗时,但CMS在这一步实现了并发 3)重新标记,CMS使用的是增量更新,较原始快照会慢一点,但是浮动垃圾会少一点 4)并发清除,可以注意到采用标记-清除不需要移动对象,我们可以做到并发,那他会有那些缺点呢?(先抛出一个问题。
2024-07-01 22:06:46
319
1
原创 ThreadLocal内存泄漏及弱引用设计原因
它是ThreadLocal中一个静态内部类,它就是一个Map结构,底层放的元素是使用ThreadLocal作为key,变量作为value的Entry。那么假设我们此时已经使用完了ThreadLocal,那么ThreadLocal会被回收掉,但注意到Thread到Entry是存在着一条生命周期跟随线程的引用链的。Map的创建时机为第一次调用set()函数时,会判断getMap()是否为空,如果为空则会创建ThreadLocalMap并与线程绑定。此时我们就可以在线程里安全的使用分配给线程的连接。
2024-06-26 18:40:33
405
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人