Java GC策略以及选择
2018-03-14 00:00
162 查看
GC 的简单介绍
GC 策略
Serial收集器一个单线程的收集器,在进行垃圾收集时候,必须暂停其他所有的工作线程直到它收集结束。
特点:CPU利用率最高,停顿时间即用户等待时间比较长。
适用场景:小型应用
通过JVM参数-XX:+UseSerialGC可以使用串行垃圾回收器。
Parallel收集器
采用多线程来通过扫描并压缩堆
特点:停顿时间短,回收效率高,对吞吐量要求高。
适用场景:大型应用,科学计算,大规模数据采集等。
通过JVM参数 XX:+USeParNewGC 打开并发标记扫描垃圾回收器。
CMS收集器
采用“标记-清除”算法实现,使用多线程的算法去扫描堆,对发现未使用的对象进行回收。
(1)初始标记
(2)并发标记
(3)并发预处理
(4)重新标记
(5)并发清除
(6)并发重置
特点:响应时间优先,减少垃圾收集停顿时间
适应场景:服务器、电信领域等。
通过JVM参数 -XX:+UseConcMarkSweepGC设置
G1收集器
在G1中,堆被划分成 许多个连续的区域(region)。采用G1算法进行回收,吸收了CMS收集器特点。
特点:支持很大的堆,高吞吐量
--支持多CPU和垃圾回收线程
--在主线程暂停的情况下,使用并行收集
--在主线程运行的情况下,使用并发收集
实时目标:可配置在N毫秒内最多只占用M毫秒的时间进行垃圾回收
通过JVM参数 –XX:+UseG1GC 使用G1垃圾回收器
GC的选择
官方推荐,需要根据应用的实际情况进行选择。在选择之前必须要对应用的堆大小、收集频率进行估算。使用SerialGC的场景: 1、如果应用的堆大小在100MB以内。 2、如果应用在一个单核单线程的服务器上面,并且对应用暂停的时间无需求。
使用ParallelGC的场景: 如果需要应用在高峰期有较好的性能,但是对应用停顿时间无高要求(比如:停顿1s甚至更长)。
使用G1、CMS场景: 1、对应用的延迟有很高的要求。 2、如果内存大于6G请使用G1。
相关文章推荐
- java中对struts中token的使用方法以及jvm学习--策略文件简述
- Java GC工作原理以及Minor GC、Major GC、Full GC简单总结
- ThreadPoolExecutor中策略的选择与工作队列的选择(java线程池)
- java学习(5),JVM内存模型以及GC回收算法
- 问题解决Android studio遇到 java.lang.OutOfMemoryError: GC app:transformClassesWithDexForDebug解决方法 以及gradle优化
- 简单选择排序的Java实现、性能分析以及适用场景
- JAVA读XML:sax,dom,jdom,dom4j的比较以及选择
- ThreadPoolExecutor中策略的选择与工作队列的选择(java线程池)
- 使用shell排序,插入排序,选择排序,冒泡排序,以及java的Arrays中自带的排序进行对比
- Java -- Hotspot虚拟机调优与GC垃圾回收策略
- Excel2003和Excel2007对下拉选择和下拉级联选择的操作以及java程序的调用
- 排序算法之选择排序的思想以及Java实现
- 21. Java的虚拟机的内容。这部分主要包括三部分,GC、类加载机制,以及内存?
- java基础—常用的GC策略,什么时候会触发YGC,什么时候触发FGC?
- Java的GC与内存分配策略
- Java GC 策略
- java小程序——给数组随机赋值,查找输入的值以及冒泡和选择排序数组并输出
- java实现三种简单排序以及改良:冒泡排序,选择排序,直接插入排序
- JAVA读XML:sax,dom,jdom,dom4j的比较以及选择
- JAVAWEB开发之Hibernate详解(三)——Hibernate的检索方式、抓取策略以及利用二级缓存进行优化、解决数据库事务并发问题