java - Java 1.6 和 1.7 之间的 Conc Mark 和 Sweep Garbage Collector 区别

标签 java garbage-collection java-7 java-6 concurrent-mark-sweep

我正在使用带有 CMS GC 的 jdk 1.6,当我尝试迁移到 JDK 1.7 时,堆使用量增加并且进程变慢。

这些版本的 GC 行为是否存在重大差异?如果它在 JDK 1.7 中变慢了,有什么解决方法?

最佳答案

在下面的 jdk 1.7 中有 2 个与 cms 相关的主要变化。

并发标记清除收集器 (CMS) 的默认开箱即用堆大小和形状参数已被修改。新设置利用了自 JDK 6 发布以来引入的更快的平台。与 HotSpot 中的其他收集器一样,CMS 现在将使用平台上可用的物理内存来调整其堆的大小,同时尝试调整该堆以保持与“合理”的小收集相关的暂停时间。堆的具体形状也可能在其他方面依赖于平台。用户可以通过显式调整堆大小或调整堆(也称为“堆调整”)来覆盖所有或部分默认设置,以满足他们的特定需求。

JDK 6 发行说明包括 CMS 的性能增强。为了提供一种机制以继续使用 JDK 5 提供的行为,提供了 CMUSeOldDefaults 标志。此标志将许多设置恢复为默认状态。在过去的几年里,这个标志的使用很少,大多数客户更喜欢改进的 CMS 性能。 CMSUseOldDefaults 标志现已在 jdk7 中删除。

来源:JDK 7 中的 Java 虚拟机增强

关于java - Java 1.6 和 1.7 之间的 Conc Mark 和 Sweep Garbage Collector 区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21178353/

相关文章:

java - Java编程中的逻辑错误

java - 如何找到自上次使用 JVM 进行垃圾回收以来耗时?

java - JSP 的 servlet session 失效问题

java - 开发多线程Javafx应用需要注意什么?

java - java中的 vector 排序

java - 如何将 Json String 映射到 POJO?

java - JComboBox 返回值

c# - 垃圾收集保证

java - 当发生young GC时,ext root扫描需要很长时间。可能的原因是什么?

java - 针对多个用户输入的多个异常处理