Ger*_*ler 30 java garbage-collection heap-memory g1gc
我想知道JDK 7版本中"垃圾优先"(G1)收集器的官方状态是什么.我想使用G1作为CMS的低暂停gc替代品,但前提是我真的可以信赖它的稳健性.
在JDK 7推出之前,G1被宣传为闪亮的新gc将取代CMS收集器,甚至成为JDK 7中的默认gc.但是,现在使用Oracle JDK 7u1,G1不是我拥有的任何机器上的默认gc试过.
即使在JDK 7中-XX:+UnlockExperimentalVMOptions使用时不再需要指定-XX:+UseG1GC,它仍然是官方完全未记录的JVM功能:
我发现提到G1的唯一正式文件已经过时了,并且在JDK 7发布之前很久就写完了:
http://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html
例如,官方的"Java HotSpot VM Options"文档(http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html)记录了如何启用和调整其他收集器,但是甚至没有提到G1的存在.好像它不存在!
这很令人困惑,我想知道G1的真实状态及其未来是什么.它真的稳定吗?是否已解决剩余的问题(如泄漏,虚假崩溃和缺少仪器支持)?如果是这样,为什么Oracle将G1GC视为无证(令人尴尬?)的秘密?G1可能是一个失败的项目,现在已经默默地停止了吗?或者我需要支付文档和支持吗?还是仅仅是测试版?有人可以告诉我这里发生了什么吗?
Bri*_*128 12
问这个问题的地方在hotspot-gc-dev邮件列表上.
如果你查看档案,你会发现有很多工作要做.许多邮件似乎是提交和审查请求/评论,所以他们正在忙着处理它.
我没有找到任何官方新闻公告,但这就是Oracle的工作方式.如果你对其中一个开发者的非官方和非约束性评论感到满意,你或许可以在邮件列表上询问他们认为他们会怎么做.
我不认为这个问题有一个简单的答案,尽管可能不是.G1最初的重点是为极大的堆提供合理的暂停.这意味着今天它可能不是每个人的最佳选择.我们认为该技术"有很多优势",这意味着通过适应,它可以解决许多不同类型的垃圾收集需求.所以有一天,它可能实际上是默认的收集器,但现在还不能确定.
考虑到GC行为的改变可能对现有部署造成非常大的破坏,我们不愿意在没有相当大的提前通知的情况下在主要版本中进行这样的转变.因此,在当前版本中,如果您没有指定收集器,我们会尝试做一些简单的自动选择,但我怀疑我们会在短期内对这种行为做出根本改变.
对于支持G1的更大问题,目前的答案是否定的.但请记住,Oracle为其支持产品的付费客户提供的支持承诺相当重要,除了满足功能和可靠性要求之外,还有更多内容.
我们继续鼓励每个人测试和评估G1,当然,随着我们继续对G1进行重大开发,我们会向他们提供反馈.
-约翰
编辑:根据Oracle网站上的这个链接,它看起来像G1GC现在完全支持.
小智 6
我们已经使用了将近一年半的G1GC。它在我们的关键任务事务处理系统中发挥了出色的作用,并被证明是对高吞吐量,低暂停,并发,多线程和优化的大容量内存管理的强大支持。
我们正在使用以下JVM设置:
-server -d64 -Xms512m -Xmx3072m -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC
-XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis
-XX:MaxGCPauseMillis=400 -XX:GCPauseIntervalMillis=8000
-XX:+UseCompressedOops -XX:NewRatio=50
Run Code Online (Sandbox Code Playgroud)
根据这个:http://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html,
G1 开发现在主要集中于解决任何剩余的可靠性问题和提高性能
还,
就GC停顿时间而言,G1有时比CMS好,有时比CMS差。我们正在努力使 G1 始终与 CMS 一样好,甚至更好。
因此,当官方 JDK SE 7 发布时,G1 应该会取代 CMS。
| 归档时间: |
|
| 查看次数: |
4286 次 |
| 最近记录: |