由于Java 7将默认使用新的G1垃圾收集,因此Java是否能够处理更大数量级的堆而不会“破坏” GC暂停时间?有人在生产中实际实现过G1,您的经验是什么?
公平地讲,我只有很长时间才发现GC暂停时间非常长,这远远超过了工作站。为了澄清我的问题; G1是否会打开通往数百GB堆的网关?结核病?
最佳答案
听起来G1的点要具有更短的暂停时间,甚至可以指定最大暂停时间目标。
垃圾回收不仅仅是一个简单的“嘿,它已经装满了,让我们一次移动所有内容并重新开始”就可以了,它是一个极其复杂的,多层的,后台线程系统。它可以在后台进行很多维护工作,而无需暂停,它还可以在运行时使用系统的预期模式的知识来提供帮助-例如假设大多数对象在创建后就死掉,等等。
我要说的是,GC暂停时间将随着将来的发布而继续改善,而不是恶化。
编辑:
在重新阅读时,我发现我每天都在使用Java,包括Eclipse,Azureus和我开发的应用程序,而且自从停顿以来已经很长时间了。这不是一个明显的停顿,但我的意思是完全停顿。
右键单击Windows Explorer时(偶尔)连接某些USB硬件但没有Java时,我已经看到暂停。
GC仍然是任何人的问题吗?