gpt4 book ai didi

Java JVM 选择和垃圾收集

转载 作者:行者123 更新时间:2023-12-02 02:05:19 26 4
gpt4 key购买 nike

我对那些具有调整 Java 经验的人感兴趣的信息,以便在提供两个物理 CPU、每个 16 个物理核心(总共 32 个物理核心)和 32 个虚拟核心(总共 64 个核心)时提供最佳性能,并且64 GB 内存。答案应该集中于哪个 JVM 提供所需的 CPU 支持(SIMD/超线程等)以及用于支持此类环境的任何 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

最佳答案

全面披露,我在 Azul Systems 工作。

回答您的问题:

  1. 从 JVM 角度来看,Oracle JDK 和 OpenJDK 之间没有区别。 Oracle 使用 OpenJDK 作为其 JDK 的基础(它也是 Java SE 标准的引用实现)。因此,OpenJDK 和 Oracle JDK 支持具有相同选项的完全相同的收集器。
  2. 根据您提供的信息,这不是一个可以准确回答的问题。您已使用人体工程学选项来设置 GC 的最大暂停时间,并设置了收集器使用的线程数。进一步的调整确实需要有关应用程序内存使用情况的数据,即分配对象的速度、通常保留对这些对象的引用的时间、工作集的大小等。然后,您可以使用 GC 日志记录中的数据来评估年轻代大小、保有阈值等的变化。
  3. 肯定有。 Zing JVM(来自 Azul)使用不同的 GC 方法。它不使用写入屏障,而是使用读取屏障,使应用程序线程的收集和压缩能够实现真正的并发。根据计算机中的内核数量和内存量,您可以毫无问题地实现 200 毫秒最大暂停的目标(许多应用程序的暂停时间会下降到大约 10 毫秒或更短)。如果没有更多关于您的应用程序正在执行的操作的数据,我无法保证这一点,但很有可能。

关于Java JVM 选择和垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50917357/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com