现在JVM部分回收器介绍
可能我们目前在使用的是CMS垃圾回收器或者是G1垃圾回收器或者什么没有设置使用的是jdk默认的垃圾回收器。
我们如何来查看我们目前默认使用的jdk垃圾回收器呢?
可以使用如下命令:
java -XX:+PrintCommandLineFlags -version
我本地的jdk1.8.0_151默认的垃圾回收器是就是-XX:+UseParallelGC
,其实jdk1.7.x默认的回收器也是-XX:+UseParallelGC
。
添加日志
-verbose:gc
-XX:+HeapDumpOnOutOfMemoryError
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-Xloggc:/appl/gclogs/gc.log
备注:-Xloggc的目录需要提前建好。
通过上面日志分析得出,PSYoungGen、ParOldGen、PSPermGen属于Parallel收集器。
通过上面2个方法都可以看出来jdk8默认是PS垃圾回收器。
Parallel Scavenge 收集器更关注系统的吞吐量。可以通过参数来打开自适应调节策略(默认是打开的,-XX:+UseAdaptiveSizePolicy
,可以使用jinfo -flag UseAdaptiveSizePolicy pid
进行查看,JVM菜鸟进阶高手之路九(解惑)里面有提到过。),虚拟机会根据当前系统的运行情况收集性能监控信息,动态调整这些参数以提供最合适的停顿时间或最大的吞吐量;
-XX:+PrintFlagsInitial
表示打印出所有XX选项的默认值,-XX:+PrintFlagsFinal
表示打印出XX选项在运行程序时生效的值。
由于业务系统是OLTP系统,这个应该以最小停顿先,应该用cms收集器 ,配置为-XX:+UseConcMarkSweepGC
即可。
jdk1.9 默认垃圾收集器G1 -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC
。
我们所了解的JVM垃圾回收期组合:
ZGC介绍
可能我们到G1就觉得非常完美了,下面介绍的这个ZGC,那简直是说要上天啊。
ZGC回收机预计在jdk11支持,ZGC目前仅适用于Linux / x64 。和G1开启很像,用下面参数即可开启:
-XX:+UnlockExperimentalVMOptions -XX:+UseZGC
ZGC垃圾收集器,也称为ZGC,是一个可扩展的低延迟垃圾收集器,有如下特性:
- 暂停时间不超过10毫秒
- 暂停时间不会随堆或实时设置大小而增加
- 处理堆范围从几百M到几TB。
ZGC特性:
- Concurrent
- Region-based
- Compacting
- NUMA-aware
- Using colored pointers
- Using load barriers
总结
如果ZGC垃圾回收器真的可以做到暂停时间不到10ms,那岂不是逆天了,很多对性能有要求的都是c++写就是因为没有gc影响,那么如果真的就10ms左右,那么java的地位岂不是又将大大提升。零度非常期待ZGC。
一切太美好,我想这个真的到来应该还有段时间,把代码写好,注意一些细节也是王道,期待JAVA越来越好。
本人其他JVM菜鸟进阶高手之路相关文章
- 面试为什么需要了解JVM
- JVM菜鸟进阶高手之路十四:分析篇
- JVM菜鸟进阶高手之路十三(等你来战!!!)
- JVM菜鸟进阶高手之路十二(jdk9、JVM方面变化, 蹭热度)
- JVM菜鸟进阶高手之路十一(eden survivor分配问题)
- JVM菜鸟进阶高手之路十(基础知识开场白)
- JVM菜鸟进阶高手之路九(解惑)
- JVM菜鸟进阶高手之路八(一些细节)
- JVM菜鸟进阶高手之路七(tomcat调优以及tomcat7、8性能对比)
- JVM菜鸟进阶高手之路六(JVM每隔一小时执行一次Full GC)
- JVM菜鸟进阶高手之路五
- JVM菜鸟进阶高手之路四
- JVM菜鸟进阶高手之路三
- JVM菜鸟进阶高手之路二
- JVM菜鸟进阶高手之路一(一次与笨神,阿飞近距离接触修改JVM)
如果读完觉得有收获的话,欢迎点赞、关注、加公众号【匠心零度】,查阅更多精彩历史!!!