探秘Java 7新增垃圾接纳器G1特征

  • 时间:
  • 浏览:43
G1垃圾接纳器(简称G1 GC)是JDK 7中Java HotSpot VM新引入的垃圾接纳器,Java SE 6 Update 14中已经包罗了一个G1的体验版本(据51CTO之前的报导,在Java SE 6 u14于6月初登场时,原本Sun的声明是:G1垃圾接纳器需要收费方能使用。然而之后不久,Sun表现这是一个误会,修改了原本的公布声明,并表现现在以及未来对G1的使用都是完全免费的),G1是设计用于替换HotSpot低延迟的并行标志/扫除垃圾接纳器(也叫做CMS)的。 
  Java 7 G1属性

  G1是一个服务端垃圾接纳器,有以下属性:

  ◆并行和并发性:G1使用了当今硬件中存在的并行性,当Java应用法式的线程被制止时,它使用所有可用的CPU(焦点,硬件线程等)加速其制止,在制止历程中运行Java线程最小化整个客栈。

  ◆代:和其他HotSpot GC一样,G1是一代,意味着它在处置惩罚新分配的工具(年轻代)和已经生活了一段时间的工具(年迈代)时会差别,它主要集中于新工具上的垃圾接纳运动,由于它们是最可能接纳的,旧工具只是偶然会见一下,对于大多数Java应用法式,代的垃圾接纳对于替换方案具有主要优势。

  ◆压缩:和CMS差别,G1会随时间推移对客栈举行压缩,压缩消除了潜在的碎片问题,确保长时间运行的操作流通和一致。

  ◆可展望性:G1比CMS展望性更佳,这都是由于消除了碎片问题带来的利益,再也没有CMS中制止时代泛起的负面影响,另外,G1有一个暂停展望模子,允许它知足(或很少凌驾)暂停时间目的。

  Java 7 G1形貌

  和其它HotSpot GC相比,G1接纳了一个很是差别的客栈结构要领,在G1中,年轻代和年迈代之间没有物理隔离,相反,它们之间有一个一连的客栈,被分成巨细一样的区域(region),年轻代可能是一套非一连的区域,年迈代也一样,这就允许G1在年轻代和年迈代之间天真地移动资源。

  G1中的接纳是通过消除暂停发生的,在此时代,幸存者指的是接纳集被转移到另一个区域,以便接纳区域可以再生,消除暂停是并行的,所有可用的CPU都市到场,大多数消除暂停网络可用的年轻区域,和其它HotSpot GC中的年轻接纳是一样的,在暂停时代偶然也会选择年迈区域接纳,由于G1在年轻一代接纳上还肩负了年迈代的接纳运动。

  和CMS相同的是,G1会定期执行一个并发标志暂停,这个阶段的主要职责是识别哪一个年迈区域的垃圾工具是最完整的,由于这些是最有用和最值得接纳的,和CMS差别的是,G1不会执行并发扫除暂停,相反,最有用的年迈区域是通过并发标志暂停标识的,在随后的消除暂停时代举行接纳。

  使用G1

  G1仍然被看做是试验品,可以使用下面两个参数开启它:

  -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC 为了设置一个GC暂停时间目的,使用下面的参数:

  -XX:MaxGCPauseMillis =50  (暂停时间目的50ms) 使用G1时还可以指准时间距离,当GC暂停连续时间没有上面给出的时间长时可以这么用:

  -XX:GCPauseIntervalMillis =200  (暂停距离目的200ms) 注重上面两个选项表现的目的,没有答应和保证,在某些情形下它们可能能够事情,GC不是总是能够执行它们。

  另外,年轻代的巨细可以明确指定影响消除暂停时间:

  -XX:+G1YoungGenSize=512m (年轻代巨细512M) G1也使用幸存空间(可能是非一连的区域),它们的巨细可以使用一个常见的参数指定,如:

  -XX:SurvivorRatio=6 最后,为了运行G1充实施展其潜力,实验设置以下两个默认被禁用了的参数,由于它们可能会袒露一个稀有的竞争状态:

  -XX:+G1ParallelRSetUpdatingEnabled   -XX:+G1ParallelRSetScanningEnabled  注重当设置了-XX:+PrintGCDetails后,G1比起其它HotSpot GC要烦琐得多,由于它会打印每个GC线程的计时和其它有助于举行故障清除的信息,若是你想使GC日志更简朴,请使用-verbosegc参数。

  Java 7 G1最新希望

  G1开发现在主要集中在遗留的可靠性问题和改善性能,同时也在逐步移除下面的限制:

  ◆G1不能完全支持JVM工具接口(JVM TI)或Java治理扩展(JMX),因此关于G1的监视和治理工具很可能不能正常事情;

  ◆G1不支持增量永世性代接纳,若是一个应用法式发生了许多类转储,需要永世性代接纳,这在完整GC时代是可以实现的;

  ◆从GC暂停时间来说,G1有时体现比CMS好有时比CMS差。

  原文:Java HotSpot Garbage Collection

本栏文章均来自于互联网,版权归原作者和各公布网站所有,本站网络这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( Pfan.cn )