JVM学习笔记(七) --- 垃圾收集器第三季及监控工具
CMS收集器
CMS收集器是一种以获取最短停顿时间为目标的收集器。从名字(Concurrent Mark Sweep)上就可以看出,采用的标记-清除算法,它的过程分为4个步骤:
只有初始标记和重新标记需要暂停用户线程。
-
初始标记 — 仅仅关联GC Roots能直接关联到的对象,速度很快
-
并发标记 — 进行GC Roots Tracing的过程,
-
重新标记 — 为了修正并发标记期间,因用户程序运作而导致标记产生变动的那一部分对象的标记记录
-
并发清除
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CNx300OK-1575037205792)(C:\Users\zhangle\Desktop\work\jvm垃圾回收\JVM垃圾回收机制.assets\1575024858995.png)]
由于整个过程中耗时最长的并发标记和并发清除过程收集器都能与用户线程一起工作,所以总的来说,CMS的内存回收过程与用户线程一起并发执行的
CMS收集器的三大缺点:
- CMS收集器对CPU资源非常敏感
- 无法处理浮动垃圾
- 因为基于标记清除算法,所以会有大量的垃圾碎片产生
G1收集器
G1是一款面相服务端的垃圾收集器,未来可能替换掉CMS的收集器,与其它收集器相比,G1收集器有以下特点:
- 并行与并发
- 分代收集
- 空间整合
- 可预测的停顿
- 理解GC日志
垃圾收集器参数总结
虚拟机性能监控与故障处理工具
Jconsole是一种基于JMX的可视化监视,管理工具。
-
Jsonsole所在的目录
在jdk的bin目录下可以看到,然后双击它打开监控界面,因为我本地运行的是idea,所以选择这个进行监控,点击连接
进来以后我们可以看到这个界面,概述页签主要是虚拟机主要运行数据的概览。有四个图,分别为堆,线程,类和CPU占有率
内存页签用于监视受收集器管理的虚拟机内存(java堆和永久代的)变化趋势,
线程页签,当线程等待时可以用来监控分析