java - GC垃圾收集器详解(三)
以前收集器的特点 年轻代和老年代是各自独立且连续的内存块 年轻代收集必须使用单个eden+S0+S1进行复制算法 老年代收集扫描整个老年代区域 都是以尽可能少而快速地执行GC为设计原则 G1是什么 G1(Garbage-Frist)收集器,是一款面向 服务端 应用的收集器 从官网的描述中,我们知道G1是一种服务器端的垃圾收集器,应用在多处理器和大容量内存环境中,在提高吞吐量的同时,尽可能的满足垃圾收集暂停时间的要求。另外,它还具有以下特性: 像CMS收集器一样,能与应用程序线程 并发执行 整理空闲空间更快 需要更多的时间来 预测GC停顿时间 不希望牺牲大量的吞吐性能 不需要更大的Java Heap G1收集器的设计目标是取代CMS收集器 ,它同CMS相比,在以下方面表现更出色: G1是一个有整理内存过程的垃圾收集器,不会产生很多内存碎片 G1的Stop-The-World(STW)更可控,G1在停顿时间上添加了预测机制,用户可以指定期望停顿时间。 CMS垃圾集器虽然减少了暂停应用程序的运行时间,但是它还是存在着内存碎片问题。于是,为了去除内存碎片问题,同时又保留CMS垃圾收集器低暂停时间的优点, JAVA7发布了一个新的垃圾收集器-G1垃圾收集器 。 G1是在2012年才在jdk1.7u4中可用。oracle官方计划在 jdk9中将G1变成默认的垃圾收集器以替代CMS