如何在 MacOS 上为 OpenJDK13 启用 Shenandoah 垃圾收集器

How to enable Shenandoah Garbage Collector for OpenJDK13 on MacOS

我的 Mac 上有最新的 (13.0.1) OpenJDK,但它似乎不包括 Shenandoah。我疯了吗?我知道发货了它适用于我的 Linux 机器。有不同的下载吗?不同的标志?

~ $ java -XX:+UnlockExperimentalVMOptions -XX:+PrintCommandLineFlags -version                                                                                                         
 -XX:G1ConcRefinementThreads=4 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=134217728  
 -XX:MaxHeapSize=2147483648 -XX:MinHeapSize=6815736 -XX:+PrintCommandLineFlags 
 -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UnlockExperimentalVMOptions 
 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC
openjdk version "13.0.1" 2019-10-15
OpenJDK Runtime Environment (build 13.0.1+9)
OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing)
~ $ java -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:+PrintCommandLineFlags -version                                                                                              
Error occurred during initialization of VM
Option -XX:+UseShenandoahGC not supported

我认为 this Red Hat blog post 可能是相关的,特别是考虑到 Shenandoah 在您的 Linux 机器上运行而不是 macOS。

TL;DR:Red Hat 领导了 Shenandoah 的开发,因此 Oracle 对将其放入 OpenJDK 犹豫不决。因此,并非所有构建都支持它。

如果你想在 MacOS 上使用 Shenandoah,你必须自己构建它,这是大多数人正在做的。

添加这个答案是因为我看到很多人在 MacOS 上寻找 Shenandoah