相比CMS收集器有两个显著的改进:

  (1)、 G1收集器是基于“标记-整理”算法实现的收集器,不会产生空间碎片

  (2)、 它可以精确地控制停顿,能让使用者明确指定在一个长度为M毫秒的时间片段内,消耗在垃圾收集上的时间不得超过N毫秒。

  原理:G1将整个Java堆(包括新生代、老年代)划分为多个大小固定的独立区域(Region),并且跟踪这些区域里面的垃圾堆积程度,在后台维护一个优先列表,每次根据允许的收集时间,优先回收垃圾最多的区域(这也是Garbage First名称的由来)。

  区域划分及有优先级的区域回收,保证了G1收集器在有限的时间内可以获得最高的收集效率。

  G1的第一篇paper(附录1)发表于2004年,在2012年才在jdk1.7u4中可用。oracle官方计划在jdk9中将G1变成默认的垃圾收集器,以替代CMS。为何oracle要极力推荐G1呢,G1有哪些优点?

  首先,G1的设计原则就是简单可行的性能调优,开发人员仅仅需要声明以下参数即可:

-XX:+UseG1GC -Xmx32g -XX:MaxGCPauseMillis=200

  其中-XX:+UseG1GC为开启G1垃圾收集器,-Xmx32g 设计堆内存的最大内存为32G,-XX:MaxGCPauseMillis=200设置GC的最大暂停时间为200ms。如果我们需要调优,在内存大小一定的情况下,我们只需要修改最大暂停时间即可。

  其次,G1将新生代,老年代的物理空间划分取消了。

  这样我们再也不用单独的空间对每个代进行设置了,不用担心每个代内存是否足够。

最新文章

  1. 可视化(番外篇)——SWT总结
  2. Java Programming Test Question 3
  3. CSS行高——line-height
  4. paip.sqlite 管理最好的工具 SQLite Expert 最佳实践总结
  5. BZOJ3999 [TJOI2015]旅游
  6. Maven的Dependency怎么找?
  7. chrome vim插件vimnum快捷键与使用
  8. crawler_httpurlconnection_自动编码识别
  9. leetcode第三题--Longest Substring Without Repeating Characters
  10. ES6数字扩展
  11. angular4 中自定义pagination组件
  12. SAXParser解析xml文件
  13. Android 开发之v4库冲突问题解决方案说明
  14. oracle解决导入高版本dmp报错问题:IMP-00058: ORACLE error 12547 encountered
  15. ANG通证是什么?有关ANG通证的干货都在这里
  16. python元组和字典的简单学习
  17. wps word改多级编号为2.1
  18. Java连接oracle数据库的两种常用方法
  19. Docker学习笔记之从镜像仓库获得镜像
  20. B树,B+树比较

热门文章

  1. ACTIVEMQ监控项目admin队列详情中文乱码
  2. [兼容]——IE 8 常见兼容性问题
  3. Vim实用技巧系列 - 搜索
  4. H02-启动hdfs时可能遇到的几个问题
  5. vba调用c#dll
  6. editplus配置csharp
  7. Android 开发工具类 09_SPUtils
  8. 全网最详细的跑python2.7时出现from mysql import connector ImportError: No module named mysql的问题解决办法(图文详解)
  9. c++面试题中经常被面试官面试的小问题总结(一)(本篇偏向基础知识)
  10. Ruby on Rails Mountable vs. Full Engine