G1垃圾收集器设计目标与改良手段
G1 (Garbage First Collector)
- 吞吐量
- 吞吐量关注的是,在一个指定的时间内(其实就是单位时间内),最大化一个应用的工作量。
- 如下方式衡量一个系统吞吐量的好坏:
- 在一个小时内同一个事务(或者任务、请求)完成的次数(tps)
- 数据库一小时可以完成多少次查询
- 对于关注吞吐量的系统,卡顿是可以接受的,因为这个系统关注长时间的大量任务的执行能力,单次快速的响应并不值得考虑。
- 响应能力
- 响应能力指一个程序后者系统对请求是否能够及时响应,比如:
- 一个桌面UI能多快地响应一个时间
- 一个网站能够多快返回一个页面请求
- 数据库能够多快返回查询的数据
- 对于这类对相应能力敏感的场景,长时间的停顿是无法接受的。
- 响应能力指一个程序后者系统对请求是否能够及时响应,比如:
- G1 (Garbage First Collector)
- g1收集器是一个面向服务端的垃圾收集器,适用于多核处理器、大内存容量的服务端系统;
- 它满足短时间gc停顿的同时达到一个较高的吞吐量;
- JDK以上版本适用。
- G1收集器的设计目标
- 与应用程序同时工作,几乎不需要stop the world(与CMS类似);
- 整理剩余空间,不产生内存碎片(CMS只能在Full GC时,用stop the world整理内存碎片);
- GC停顿更加可控;
- 不牺牲系统的吞吐量;
- GC不要求额外的内存空间(CMS需要预留空间存储浮动垃圾)。