JVM垃圾回收器之G1(Garbage First)--new
2024-10-19 04:28:10
相比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将新生代,老年代的物理空间划分取消了。
这样我们再也不用单独的空间对每个代进行设置了,不用担心每个代内存是否足够。
最新文章
- 可视化(番外篇)——SWT总结
- Java Programming Test Question 3
- CSS行高——line-height
- paip.sqlite 管理最好的工具 SQLite Expert 最佳实践总结
- BZOJ3999 [TJOI2015]旅游
- Maven的Dependency怎么找?
- chrome vim插件vimnum快捷键与使用
- crawler_httpurlconnection_自动编码识别
- leetcode第三题--Longest Substring Without Repeating Characters
- ES6数字扩展
- angular4 中自定义pagination组件
- SAXParser解析xml文件
- Android 开发之v4库冲突问题解决方案说明
- oracle解决导入高版本dmp报错问题:IMP-00058: ORACLE error 12547 encountered
- ANG通证是什么?有关ANG通证的干货都在这里
- python元组和字典的简单学习
- wps word改多级编号为2.1
- Java连接oracle数据库的两种常用方法
- Docker学习笔记之从镜像仓库获得镜像
- B树,B+树比较
热门文章
- ACTIVEMQ监控项目admin队列详情中文乱码
- [兼容]——IE 8 常见兼容性问题
- Vim实用技巧系列 - 搜索
- H02-启动hdfs时可能遇到的几个问题
- vba调用c#dll
- editplus配置csharp
- Android 开发工具类 09_SPUtils
- 全网最详细的跑python2.7时出现from mysql import connector ImportError: No module named mysql的问题解决办法(图文详解)
- c++面试题中经常被面试官面试的小问题总结(一)(本篇偏向基础知识)
- Ruby on Rails Mountable vs. Full Engine