【ElasticStack】ES的JVM内存回收机制

1.四种gc回收机制

-XX:UseSerialGC:jdk1.4的gc回收机制。
-XX:UseParallelGC:并行回收机制。
-XX:+UseConcMarkSweepGC:并发gc回收 
-XX:+UseG1GC:jdk1.7以后增加的,并发的升级版本。
--适合大CPU,大内存的垃圾回收。
--多CPU,使用:UseG1GC

2.-XX:UseSerialGC

使用串行回收器进行回收,这个参数会使新生代和老年代都使用串行回收器,
新生代使用复制算法,老年代使用标记-整理算法。Serial收集器是最基本、
历史最悠久的收集器,它是一个单线程收集器。一旦回收器开始运行时,
整个系统都要停止。Client模式下默认开启,其他模式默认关闭。

由此可见,这种垃圾回收机制性能较差。

3.-XX:UseParallelGC:并行回收机制。

代表新生代使用Parallel收集器。Parallel Scavenge收集器在各个方面都很类似ParNew收集器,
它的目的是达到一个可以控制的吞吐量。吞吐量为CPU用于运行用户代码的时间与CPU总消耗时间的比值,
即吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间),虚拟机运行100分钟,
垃圾收集花费1分钟,那吞吐量就99%。Server模式默认开启,其他模式默认关闭。
Parallel Scavenge提供了两个参数用于控制吞吐量,-XX:MaxGCPauseMillis
参数用于设置最大停顿时间,它的参数运行值是一个大于0的毫秒数,收集器将
尽力保证垃圾回收时间不超过设定值,系统运行的需要回收的垃圾总量是固定的,
缩短停顿时间的同时会增大回收频度。-XX:GCTimeRatio参数用户控制垃圾回收时间占比,
它运行的参数值是0-100的整数,如果参数设置为19,代表最大GC时间占总时间的5%(1/(1+19))。
Parallel收集器还提供了自适应的调节策略-XX:UseAdaptiveSizePolicy,
即JVM会根据实际运行情况动态调整新生代大小、新生代和s区比例、晋升老年代对象大小等细节参数。

4.-XX:+UseConcMarkSweepGC并发gc回收

-XX:+UseConcMarkSweepGC并发gc回收
Concurrent Mark Sweep 并发标记清除,即使用CMS收集器。它是和应用程序线程一起执行,
相对于Stop The World来说虚拟机停顿时间较少。停顿减少,吞吐量会降低。
它使用的是 标记清除算法,运作过程为四个步骤,分别是 
初始标记—并发标识—重新标记—并发清除。它是老年代的收集算法,新生代使用ParNew收集算法。
默认关闭
CMS收集器的缺点是对服务器CPU资源较为敏感,在并发标记时会降低吞吐量。
它使用的标记清除算法也会产生大量空间碎片,空间碎片的存在会加大Full GC的频率,
虽然老年代还有足够的内存,但是因为内存空间连续,不得不进行Full GC

5.-XX:+UseG1GC:

G1 GC,全称Garbage-First Garbage Collector,在JDK1.7中引入了G1 GC,
从JAVA 9开始,G1 GC是默认的GC算法。通过-XX:+UseG1GC参数来启用。
G1收集器是工作在堆内不同分区上的收集器,分区既可以是年轻代也可以是老年代,
同一个代的分区不需要连续。并且每个代分区的数量是可以动态调整的。
为老年代设置分区的目的是老年代里有的分区垃圾多,有的分区垃圾少,
这样在回收的时候可以专注于收集垃圾多的分区,这也是G1名称的由来。
不过这个算法并不适合新生代垃圾收集,因为新生代的垃圾收集算法是复制算法,
但是新生代也使用了分区机制主要是因为便于代大小的调整。

G1 功能包括:
堆大小可达数十 GB 或更大,超过 50% 的 Java 堆被实时数据占用。
对象分配和提升的速率可能会随时间而显著变化。
堆中存在大量碎片。
可预测的暂停时间目标目标不超过几百毫秒,避免长时间的垃圾回收暂停。
 G1 GC是设计用来取代CMS的,同CMS相比G1有以下优势:
1、可预测的停顿模型
2、避免了CMS的垃圾碎片
3、超大堆的表现更出色

 G1里面的Region的概念不同于传统的垃圾回收算法中的分区的概念。
 G1默认把堆内存分为1024个分区,后续垃圾收集的单位都是以Region为单位的。
 Region是实现G1算法的基础,每个Region的大小相等,通过-XX:G1HeapRegionSize
 参数可以设置Region的大小
G1的内存划分和主要收集过程 
G1收集回收器将堆进行分区,划分为一个个的区域,每次收集的时候,只收集其中几个区域,
以此来控制垃圾回收产生一次停顿时间。
G1的收集过程可能有4个阶段:
新生代GC
并发标记周期
混合收集
(如果需要)进行Full GC。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值