深入分析JVM:Java垃圾收集算法+常用垃圾收集器解析( 五 )
文章插图
G1应用场景G1的第一个重点是为运行需要大堆且GC延迟有限的应用程序的用户提供解决方案 。 这意味着堆大小大约为6GB或更大 , 并且稳定且可预测的暂停时间低于0.5秒 。
如果我们的应用程序具有以下一个或多个特性 , 那么可以考虑切换到G1收集器 。
- 1、超过50%的Java堆被实时数据占用 。
- 2、对象分配率或提升率差异很大 。
- 3、当前应用程序GC停顿时间超过0.5到1秒 , 而又想缩短停顿时间的应用 。
- ZGC收集器:是Java11中提供的一种垃圾收集器 。
- Shenandoah:OpenJDK中包含的收集器 , 最开始是由RedHat公司开发 , 后来贡献给了OpenJDK 。
- Epsilon(A No-Op Garbage Collector):一款控制内存分配 , 但是不执行任何垃圾回收工作的收集器 。 一旦java的堆被耗尽 , jvm就直接关闭 。
- 串行收集器:Serial和Serial Old只能有一个垃圾回收线程执行 , 用户线程暂停 。适用于内存比较小的嵌入式设备。
- 并行收集器[吞吐量优先]:Parallel Scanvenge和Parallel Old多条垃圾收集线程并行工作 , 但此时用户线程仍然处于等待状态 。适用于科学计算、后台处理等弱交互场景。
- 并发收集器[停顿时间优先]:CMS和G1 。 用户线程和垃圾收集线程同时执行(但并不一定是并行的 , 可能是交替执行的) , 垃圾收集线程在执行的时候不会停顿用户线程的运行 。适用于对时间有要求的场景 , 比如Web应用 。
作者:双子孤狼
【深入分析JVM:Java垃圾收集算法+常用垃圾收集器解析】原文链接:
- 现状|程序员现状揭秘:平均年薪20.36万,Java人才需求量最大
- 程序员学英语第1天——JavaScript 程序测试的介绍1
- 三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经
- 《深入理解Java虚拟机》:对象创建、布局和访问全过程
- java面试题整理
- Kotlin集合vs Kotlin序列与Java流
- Java安全之Javassist动态编程
- 推荐Java工程师必看,12个Hadoop领域的上手项目
- 震惊!京东T4大佬面试整整三个月,才写了两份java面试笔记
- 整理:常见的Java开发框架有哪些,看过,就赶紧收藏吧
