哈喽,大家好,我是指北君。,最近线上服务运行比较缓慢,老大提出让我进行JVM优化。GC的内容很多,也不可能一时间全部都掌握,今天就要看看G1的一些知识,还有调优时可调整的参数。,G1的全称为 Garbage First Garbage Collector, 是一款内置在HotSpot JVM中的服务端垃圾收集器。,G1是作为CMS的替代产品出现的,其目标是在满足最短时间停顿的同时达到一个高吞吐量,适用于多核处理器,大内存容量的系统。,其特点如下:,G1垃圾回收器将堆内存划分成固定大小的Region,下图为G1内存的分配示意图,其中灰色格子代表一个region。,,
,其中G1的分区可以分为4类:,,Region可以在1MB~32MB,且为2的N次幂,设定分区大小有以下方法:,新生代大小的设置如下:,关于堆大小的参数优化:,G1提供了两种GC模式,Young GC 和 Mixed GC 两种GC都会有STW.,主要是对Eden区进行GC ,一般情况下,会在Eden Region使用达到最大阈值时,空间内存不够用时,触发YoungGC。每次Young GC会回收所有的Eden 和Serviour区,并且将存活对象复制到Old区以及一些Survivor区。,Mixed GC 会选取(并发标记)所有的 Young Region和 回收收益较高的一些 Old Region, 然后进行年轻代回收算法。,混合回收分为两个阶段。,其中并发标记阶段可以分为以下几个子阶段:,FullGC发生之后,基本都是串行回收. 如果不幸发生了FullGC, 那么我们能做的就是尽量让FullGC尽快完成,然后降低其频率。但是通常情况下,比较固定且较长时间间隔的FullGC是被允许的。,那么FullGC相关也是有一些优化调整的地方:,以上是一些优化参数的使用,至于具体调优的目的要根据我们各个程序的要求。一般而言需要满足最大的吞吐量和最小的暂停时间,GC频率尽量低,堆空间的有效利用率高等。可调整的部分有内存参数的优化,引用的处理(Rset),并发标记(Mark),垃圾回收部分。,Oracle官方有一些推荐调优的方向:,参考:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/g1_gc_tuning.html
文章版权声明
1 原创文章作者:cmcc,如若转载,请注明出处: https://www.52hwl.com/18562.html
2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈
3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)
4 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别