13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

线上服务运行缓慢,老大让我进行JVM参数调优

哈喽,大家好,我是指北君。

创新互联主要业务有网站营销策划、成都做网站、网站设计、外贸营销网站建设、微信公众号开发、重庆小程序开发H5技术、程序开发等业务。一次合作终身朋友,是我们奉行的宗旨;我们不仅仅把客户当客户,还把客户视为我们的合作伙伴,在开展业务的过程中,公司还积累了丰富的行业经验、全网营销推广资源和合作伙伴关系资源,并逐渐建立起规范的客户服务和保障体系。 

最近线上服务运行比较缓慢,老大提出让我进行JVM优化。GC的内容很多,也不可能一时间全部都掌握,今天就要看看G1的一些知识,还有调优时可调整的参数。

1.G1简介

G1的全称为 Garbage First Garbage Collector, 是一款内置在HotSpot JVM中的服务端垃圾收集器。

G1是作为CMS的替代产品出现的,其目标是在满足最短时间停顿的同时达到一个高吞吐量,适用于多核处理器,大内存容量的系统。

其特点如下:

1.1分区

G1垃圾回收器将堆内存划分成固定大小的Region,下图为G1内存的分配示意图,其中灰色格子代表一个region。

其中G1的分区可以分为4类:

Region可以在1MB~32MB,且为2的N次幂,设定分区大小有以下方法:

1.1.1 新生代大小

新生代大小的设置如下:

关于堆大小的参数优化:

2.G1  GC可优化参数

G1提供了两种GC模式,Young GC 和 Mixed GC 两种GC都会有STW.

Young GC

主要是对Eden区进行GC ,一般情况下,会在Eden Region使用达到最大阈值时,空间内存不够用时,触发YoungGC。每次Young GC会回收所有的Eden 和Serviour区,并且将存活对象复制到Old区以及一些Survivor区。

Mixed GC

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


分享名称:线上服务运行缓慢,老大让我进行JVM参数调优
标题来源:http://cdbrznjsb.com/article/coihspc.html

其他资讯

让你的专属顾问为你服务