JVM常见的七种垃圾收集器的简单比较
2024-08-24 12:58:44
1、Serial收集器曾经是虚拟机新生代收集的唯一选择,是一个单线程的收集器,在进行收集垃圾时,必须stop the world,它是虚拟机运行在Client模式下的默认新生代收集器。
2、Serial Old是Serial收集器的老年代版本,同样是单线程收集器,使用标记整理算法。
3、ParNew收集器是Serial收集器的多线程版本,许多运行在Server模式下的虚拟机中首选的新生代收集器,除Serial外,只有它能与CMS收集器配合工作。
4、Parallel Scavenge收集器也是新生代收集器,使用复制算法又是并行的多线程收集器,它的目标是达到一个可控制的运行用户代码跟(运行用户代码+垃圾收集时间)的百分比值。
5、Parallel Old收集器是Parallel Scavenge收集器的老年代版本,使用多线程和标记整理算法。
6、Concurrent Mark Sweep 收集器是一种以获得最短回收停顿时间为目标的收集器,基于标记清除算法。
过程如下:初始标记,并发标记,重新标记,并发清除,优点是并发收集,低停顿,缺点是对CPU资源非常敏感,无法处理浮动垃圾,收集结束会产生大量空间碎片。
7、G1收集器是基于标记整理算法实现的,不会产生空间碎片,可以精确地控制停顿,将堆划分为多个大小固定的独立区域,并跟踪这些区域的垃圾堆积程度,在后台维护一个优先列表,每次根据允许的收集时间,优先回收垃圾最多的区域(Garbage First)。
原文链接:http://blog.csdn.net/lingzhm/article/details/47174391
最新文章
- WinForm 与WPF 窗体之间的想到调用
- [C] 关于表达式求值
- MySQL迁移[转]
- 用于Simple.Data的ASP.NET Identity Provider
- Linux命令(1)-创建文件
- MyEclipse卡死解决
- JVM 优化问题
- Python之路,Day16 - Django 进阶
- 我的四年建站故事(X)
- C++ DLL导出函数的两种方法(导出序号那种方法,别人看不到函数名)
- JavaScript 属性操作
- Windows Opengl ES 环境搭建
- js-location应用
- 截屏 iOS
- js万亿级数字转汉字的封装方法
- 国内优秀MVC开源框架jfinal简介
- [转载]MACD 各周期指标状态
- mysql分区分表讲解
- webapi_uploadfile_gdal_to_geojson_and_unzipfile
- golang 闭包求斐波那契数列