我没有指定任何 GC,我认为我的 JVM 默认没有启用任何 GC。
当然我知道OpenJDK8默认使用ParallelGC,但我认为它应该可以通过命令行打印,像这样:
java -XX:+PrintFlagsFinal|grep Use|grep GC
我希望输出包含 bool UseParallelOldGC = true {product}但它不是:
bool ParGCUseLocalOverflow = false {product}
bool UseAdaptiveGCBoundary = false {product}
bool UseAdaptiveSizeDecayMajorGCCost = true {product}
bool UseAdaptiveSizePolicyWithSystemGC = false {product}
bool UseAutoGCSelectPolicy = false {product}
bool UseConcMarkSweepGC = false {product}
bool UseDynamicNumberOfGCThreads = false {product}
bool UseG1GC = false {product}
bool UseGCLogFileRotation = false {product}
和
java -XX:+PrintCommandLineFlags -version
我希望输出包含:XX:+UseParallelGC但也不是:
-XX:InitialHeapSize=460493056 -XX:MaxHeapSize=7367888896 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops
.
我的 JVM 选项:
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -verbose:gc -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime
.
上面的输出表明没有启用任何 GC(我想是这样),我对这种情况感到非常困惑。
日志显示 JVM 堆分为new和tenured,但没有打印 GC 类型。
可悲的是,我也不能jmap -heap {pid}用来获取 GC 类型,因为 jmap 在我的环境中没有这个选项(-heap)。
所以我想知道:
哪个 GC 是我真正使用的?
命令行选项(-XX:+PrintCommandLineFlags和-XX:+PrintFlagsFinal)输出信息是否正确?
我的环境:k8s+docker,Alpine OpenJKD8
哔哔one
Helenr
相关分类