我正在使用带有CMS GC的jdk 1.6,当我尝试迁移到JDK 1.7时,堆使用量增加,进程变慢。
这些版本的GC行为是否存在重大差异?如果它在JDK 1.7中变得更慢,那么解决方法是什么?
答案 0 :(得分:0)
在下面的jdk 1.7中是与cms相关的两个主要变化。
已修改并发标记清除收集器(CMS)的默认开箱即用堆大小和形状参数。新设置利用了自JDK 6发布以来引入的更快的平台。与HotSpot中的其他收集器一样,CMS现在将使用平台上的可用物理内存来调整其堆大小,同时尝试对该堆进行整形以使与次要收集相关联的暂停时间“合理”。堆的特定形状也可以以其他方式依赖于平台。用户可以通过显式调整或整形堆,AKA“堆调整”来覆盖所有或部分默认设置,以满足其特定需求。
JDK 6发行说明包括CMS的性能增强功能。为了提供继续使用JDK 5提供的行为的机制,提供了CMSUseOldDefaultsflag。此标志将许多设置恢复为默认状态。在过去的几年中,这个标志使用最少,大多数客户更喜欢改进的CMS性能。现在,在jdk7中删除了CMSUseOldDefaults标志。
来源:JDK 7中的Java虚拟机增强功能