【问题标题】:Are there any JVMs that do not use generational garbage collection有没有不使用分代垃圾收集的 JVM
【发布时间】:2013-05-30 16:24:16
【问题描述】:

我正在就 Java 中的垃圾收集以及所使用的不同算法等进行一个基本的演讲。我的 GC 经验仅限于 Hotspot JVM。

我只是想知道周围是否有任何 JVM 不使用分代收集概念(即 Young、Old)?以防万一有人问我这个问题!

谢谢。

【问题讨论】:

    标签: java garbage-collection jvm jvm-hotspot


    【解决方案1】:

    有很多 JVM 实现(见this page 有一个想法)。所以是的,其中一些可能不是基于Weak Generational Hypothesis。例如,JamaicaVM(用于嵌入式系统的硬实时 Java VM)等 JVM 可以做出其他假设,因为它们的目标应用程序与 Oracle JVM 不同。

    但是,最常用的实现(Oracle JVM、IBM J9 和 Azul Zing)都是基于它的。

    请注意,在 G1 GC 中,Oracle JVM 添加了一种新类型的集合:分代和区域集合

    希望有帮助!

    【讨论】:

      【解决方案2】:

      Java 1.0 和 1.1 使用了标记清除收集器。

      参考:http://en.wikipedia.org/wiki/Java_performance#Garbage_collection

      我也明白现代 JVM 在极端情况下会退回到标记-扫描-紧凑型收集器;例如当您配置了 CMS 并且它跟不上时。

      【讨论】:

      • ParallelOld(默认的,也是最有效的老一代收集器)是一个压缩标记和扫描收集器。 CMS 不应该被大多数应用程序使用 - 只有那些真正需要非常低的暂停时间并且没有吞吐量限制的应用程序(即不是大多数 Web 应用程序)。
      【解决方案3】:

      在 Java 7 之前,IBM JVM 默认使用 mark-sweep-compact 的变体(-Xgcpolicy:throughput 和 -Xgcpolicy:optavgpause)。请参阅:description of policies

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-06
        • 2011-02-23
        • 1970-01-01
        • 2013-10-18
        • 2011-10-12
        相关资源
        最近更新 更多