名称 过程 优缺点

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的另一大优势)

最新文章

  1. 定时器setInterval 开始、暂停、继续!
  2. jstl core 库 之 out set remove
  3. php构造函数extends
  4. [原]cocos2d-lua 常用法汇总
  5. Umbraco Forms 使Rendering Forms scripts 在不同的template中
  6. PowerDesigner使用详解
  7. OpenGL于MFC使用汇总(三)——离屏渲染
  8. [C++]STL容器Vector的内存释放
  9. iOS 内存泄漏排查以及处理
  10. ASCII码表(常用)
  11. 混合开发使用Chrome Inspect调试WebView预览手机界面和定位元素
  12. linux 服务器脚本采集数据中文无法执行错误
  13. [Hive_2] Hive 的安装&配置
  14. 保存登录plsql developer 的用户名和密码
  15. tomcat配置多个项目通过IP加端口号访问
  16. 关于对JSON.parse()与JSON.stringify()的理解
  17. 【转】MongoDB 3.0 正式版本即将发布,强力推荐
  18. SQL索引器
  19. Centos7环境下FastRunner前端(FasterWeb)部署
  20. 测试笔记:本地存储localstorage与sessionstorage

热门文章

  1. linux 安装 bitnamid-redmine
  2. asp.net MVC4 @Html.DropDownList的使用
  3. set类型没有单独取值功能 通过循环取值
  4. [洛谷P4847]银河英雄传说V2
  5. cf 442 div2 F. Ann and Books(莫队算法)
  6. 洛谷 P4556 [Vani有约会]雨天的尾巴 解题报告
  7. MyBatis之二级缓存
  8. 最近经历的一些大数据(Spark/Hadoop)面试题
  9. 分别利用并查集,DFS和BFS方法求联通块的数量
  10. js ejs for语句的第二种遍历用法