Java中基于HotSpot虚拟机的垃圾收集器
名称 | 过程 | 优缺点 |
Serial |
进行垃圾收集时,必须暂停其他所有的工作进程,直到它收集结束。 Stop the world。 新生代收集器。 手工设置新生代的大小:-Xmn Eden与Survivor区的比例:-XX:SurvivorRatio 晋升老年代对象年龄:-XX:PretenureSizeThreshold |
简单而高效(运行在Client默认新生代收集器) 对于Client模式下的虚拟机来说是一个很好的选择。 |
ParNew |
就是Serial收集器的多线程版本。 新生代收集器。 使用-XX:UseConcMarkSweepGC选项来设置默认新生代收集器。 使用-XX:+UseParNewGC来强制使用它。 |
运行在Server模式下的虚拟机中首选的新生代收集器。 在多cpu环境下有较好的效果 |
Parallel Scavenge |
使用复制算法和并行多线程的收集器。 目标是:达到一个可控制的吞吐量。 新生代收集器。 经常被称为“吞吐量优先”收集器。 控制最大垃圾收集停顿时间:-XX:MaxGCPauseMillis 控制设置吞吐量大小:-XX:GCTimeRatio 自动调整新生代的大小:-XX:+UseAdaptiveSizePolicy |
没有:良好响应速度,适合需要与用户交互的程序; 高吞吐量:高效利用CPU,适合在后台运算而不需要太多交互的任务。 自适应调节策略是Parallel Scavenge 与ParNew的一个重要区别。 |
Parallel Old |
是Parallel Scavenge的老年代版本,使用多线程和“标记-整理”算法。 | 在注意吞吐量以及CPU资源敏感的场合,都可以优先考虑Paralle Scavenge 加 Parallel Old收集器。 |
CMS |
Concurrent Mark Sweep。 是一种以获取最短回收停顿时间为目标的收集器。 适合B/S的服务器端。 整体过程分为4个步骤:初始标记、并发标记、重新标记和并发清除。 |
并发收集,低停顿。 3个明显的缺点:对CPU资源非常敏感;无法处理浮动垃圾;收集结束时会有大量空间碎片产生。 |
G1 |
当今收集器技术发展的最前沿成果之一。 是一款面向服务端应用的垃圾收集器。 如果不计算维护Rememberd Set的操作,G1运行大致分为:初始标记、并发标记、最终标记、筛选回收。 |
并行与并发;分代收集;空间整合;可预测的停顿(相对于CMS的另一大优势) |
最新文章
- 定时器setInterval 开始、暂停、继续!
- jstl core 库 之 out set remove
- php构造函数extends
- [原]cocos2d-lua 常用法汇总
- Umbraco Forms 使Rendering Forms scripts 在不同的template中
- PowerDesigner使用详解
- OpenGL于MFC使用汇总(三)——离屏渲染
- [C++]STL容器Vector的内存释放
- iOS 内存泄漏排查以及处理
- ASCII码表(常用)
- 混合开发使用Chrome Inspect调试WebView预览手机界面和定位元素
- linux 服务器脚本采集数据中文无法执行错误
- [Hive_2] Hive 的安装&;配置
- 保存登录plsql developer 的用户名和密码
- tomcat配置多个项目通过IP加端口号访问
- 关于对JSON.parse()与JSON.stringify()的理解
- 【转】MongoDB 3.0 正式版本即将发布,强力推荐
- SQL索引器
- Centos7环境下FastRunner前端(FasterWeb)部署
- 测试笔记:本地存储localstorage与sessionstorage
热门文章
- linux 安装 bitnamid-redmine
- asp.net MVC4 @Html.DropDownList的使用
- set类型没有单独取值功能 通过循环取值
- [洛谷P4847]银河英雄传说V2
- cf 442 div2 F. Ann and Books(莫队算法)
- 洛谷 P4556 [Vani有约会]雨天的尾巴 解题报告
- MyBatis之二级缓存
- 最近经历的一些大数据(Spark/Hadoop)面试题
- 分别利用并查集,DFS和BFS方法求联通块的数量
- js ejs for语句的第二种遍历用法