有点杂:jvm垃圾回收
收集器
https://blog.csdn.net/weixin_42449534/article/details/98599103
新生代
- Serial(串行、client新生代默认)/ParNew(serial多线程版本)
- 新生代
- 复制算法
- stop the world
- Parallel Scavenge(server新生代默认)
- 并行的多线程版本
- 标记复制算法?复制算法?
- 追求可控的吞吐量
老年代
- Serial(serial老年代版本)
- 标记整理算法---同下
- 简单、client老年代默认
- 跟serial一样的有:stw/单线程
- Parallel Old(Parallel Scavenge老年代版本)
- 标记整理算法---同上
- 跟新生代一样的是:stw/多线程/吞吐量优先
比较特殊的一个:
- CMS(标记清除算法、concurrent mark sweep 并行标记清除)
- 停顿少、用户体验好(高响应)
- 初始标记、并发标记、重新标记、并发清除
- 。。。(具体查看网址或者本地笔记。)
- G1
- 面向服务端引用的垃圾收集器,为了替换cms收集器(我也不懂..)
- 整体看是标记-整理算法,局部看是复制算法,不会有内存碎片
- 分代收集(新生代/老年代)
- 并行/并发:利用多核/多cpu环境,缩短停顿时间、可与用户线程并发执行
- 可预测停顿(我也不懂..)
面试点
CMS和G1的区别?
- https://blog.csdn.net/xzp_12345/article/details/81839026
- CMS是标记清除算法,G1是标记整理算法/复制算法,所以CMS会有内存碎片问题
- CMS用在老年代,G1用在新生代和老年代
- 在STW方面,CMS是做到很短的停顿时间,G1是做到可预测停顿(能明确指定ms的时间片段)
- 垃圾回收过程不一样(待看..)
https://blog.csdn.net/weixin_42449534/article/details/98599103