代码之家  ›  专栏  ›  技术社区  ›  Paul Gregoire

Java JVM选择和垃圾收集

  •  0
  • Paul Gregoire  · 技术社区  · 6 年前

    我对那些有经验的人提供的信息很感兴趣,他们在提供两个物理CPU、每个16个物理核心(总共32个物理核心)和32个虚拟核心(总共64个核心)以及64 Gb的RAM时,可以通过调整Java来提供尽可能最好的性能。答案应该集中在哪个JVM提供了所需的CPU支持(SIMD/hyperreading等)以及用于支持这种环境的任何GC策略上。

    目前我们正在使用OpenJDK 1.8和以下GC选项进行测试: -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=20 -XX:ConcGCThreads=5 .

    1. Oracle JDK是否比OpenJDK提供更好的支持?
    2. 是否有其他JDK/JVM选项要考虑?
    3. G1GC ?
    1 回复  |  直到 6 年前
        1
  •  2
  •   Speakjava    6 年前

    完全公开,我为Azul系统工作。

    1. 从JVM的角度来看,Oracle JDK和OpenJDK没有区别。Oracle使用OpenJDK作为JDK的基础(它也是JavaSE标准的参考实现)。因此,OpenJDK和Oracle JDK支持具有相同选项的完全相同的收集器。
    2. 当然有。Zing JVM(来自Azul)使用不同的GC方法。它不使用写屏障,而是使用一个读屏障,为集合启用真正的并发性 使用应用程序线程压缩。考虑到计算机的内核数量和内存量,您可以轻松实现最大暂停时间为200毫秒的目标(许多应用程序的暂停时间会降至10毫秒或更短)。如果没有更多你的应用程序正在做什么的数据,我不能保证,但很有可能。