在Java 8中显示为默认情况下未选择可用的4个收集器(GC)

我有一个运行Spring Boot微服务的容器。我 使用 当使用

标志并打印我 看到的JVM参数时)

-XX:+ UseParallelGC为true

但令我惊讶的是,这四个收集器(-XX:+ UseSerialGC,-XX:+ UseParallelGC,-XX:+

UseConcMarkSweepGC,–XX:+ UseG1GC)都没有激活。

下面显示的是我的dockerfile:

FROM openjdk:8-jdk-alpine

ADD ./demo-0.0.1-SNAPSHOT.jar /usr/src/factorial/

WORKDIR /usr/src/factorial

EXPOSE 8080

CMD java $JAVA_OPTIONS -jar demo-0.0.1-SNAPSHOT.jar

我正在使用此运行:

  docker run -d --rm --name factorialorialContainer --memory='512m' --cpus=2 -p 8080:8080 -e JAVA_OPTIONS="$(cat /Users/sulekahelmini/Documents/fyp/fyp_work/MLscripts/$3)" suleka96/factorial:latest

flags_base.txt

-Xms512m -Xmx512m -XX:+PrintFlagsFinal -version

这是-XX:+ PrintFlagsFinal输出的一部分

     intx UnguardOnExecutionViolation               = 0                                   {product}

bool UnlinkSymbolsALot = false {product}

bool Use486InstrsOnly = false {ARCH product}

bool UseAES = true {product}

bool UseAESIntrinsics = true {product}

intx UseAVX = 2 {ARCH product}

bool UseAdaptiveGCBoundary = false {product}

bool UseAdaptiveGenerationSizePolicyAtMajorCollection = true {product}

bool UseAdaptiveGenerationSizePolicyAtMinorCollection = true {product}

bool UseAdaptiveNUMAChunkSizing = true {product}

bool UseAdaptiveSizeDecayMajorGCCost = true {product}

bool UseAdaptiveSizePolicy = true {product}

bool UseAdaptiveSizePolicyFootprintGoal = true {product}

bool UseAdaptiveSizePolicyWithSystemGC = false {product}

bool UseAddressNop = true {ARCH product}

bool UseAltSigs = false {product}

bool UseAutoGCSelectPolicy = false {product}

bool UseBMI1Instructions = true {ARCH product}

bool UseBMI2Instructions = true {ARCH product}

bool UseBiasedLocking = true {product}

bool UseBimorphicInlining = true {C2 product}

bool UseBoundThreads = true {product}

bool UseCLMUL = true {ARCH product}

bool UseCMSBestFit = true {product}

bool UseCMSCollectionPassing = true {product}

bool UseCMSCompactAtFullCollection = true {product}

bool UseCMSInitiatingOccupancyOnly = false {product}

bool UseCRC32Intrinsics = true {product}

bool UseCodeCacheFlushing = true {product}

bool UseCompiler = true {product}

bool UseCompilerSafepoints = true {product}

bool UseCompressedClassPointers := true {lp64_product}

bool UseCompressedOops := true {lp64_product}

bool UseConcMarkSweepGC = false {product}

bool UseCondCardMark = false {C2 product}

bool UseContainerSupport = true {product}

bool UseCountLeadingZerosInstruction = true {ARCH product}

bool UseCountTrailingZerosInstruction = true {ARCH product}

bool UseCountedLoopSafepoints = false {C2 product}

bool UseCounterDecay = true {product}

bool UseDivMod = true {C2 product}

bool UseDynamicNumberOfGCThreads = false {product}

bool UseFPUForSpilling = true {C2 product}

bool UseFastAccessorMethods = false {product}

bool UseFastEmptyMethods = false {product}

bool UseFastJNIAccessors = true {product}

bool UseFastStosb = true {ARCH product}

bool UseG1GC = false {product}

bool UseGCLogFileRotation = false {product}

bool UseGCOverheadLimit = true {product}

bool UseGCTaskAffinity = false {product}

bool UseHeavyMonitors = false {product}

bool UseHugeTLBFS = false {product}

bool UseInlineCaches = true {product}

bool UseInterpreter = true {product}

bool UseJumpTables = true {C2 product}

bool UseLWPSynchronization = true {product}

bool UseLargePages = false {pd product}

bool UseLargePagesInMetaspace = false {product}

bool UseLargePagesIndividualAllocation = false {pd product}

bool UseLinuxPosixThreadCPUClocks = true {product}

bool UseLockedTracing = false {product}

bool UseLoopCounter = true {product}

bool UseLoopInvariantCodeMotion = true {C1 product}

bool UseLoopPredicate = true {C2 product}

bool UseMathExactIntrinsics = true {C2 product}

bool UseMaximumCompactionOnSystemGC = true {product}

bool UseMembar = false {pd product}

bool UseMontgomeryMultiplyIntrinsic = true {C2 product}

bool UseMontgomerySquareIntrinsic = true {C2 product}

bool UseMulAddIntrinsic = true {C2 product}

bool UseMultiplyToLenIntrinsic = true {C2 product}

bool UseNUMA = false {product}

bool UseNUMAInterleaving = false {product}

bool UseNewLongLShift = false {ARCH product}

bool UseOSErrorReporting = false {pd product}

bool UseOldInlining = true {C2 product}

bool UseOnStackReplacement = true {pd product}

bool UseOnlyInlinedBimorphic = true {C2 product}

bool UseOprofile = false {product}

bool UseOptoBiasInlining = true {C2 product}

bool UsePSAdaptiveSurvivorSizePolicy = true {product}

bool UseParNewGC = false {product}

bool UseParallelGC = false {product}

bool UseParallelOldGC = false {product}

bool UsePerfData = true {product}

bool UsePopCountInstruction = true {product}

bool UseRDPCForConstantTableBase = false {C2 product}

bool UseRTMDeopt = false {ARCH product}

bool UseRTMLocking = false {ARCH product}

bool UseSHA = false {product}

bool UseSHA1Intrinsics = false {product}

bool UseSHA256Intrinsics = false {product}

bool UseSHA512Intrinsics = false {product}

bool UseSHM = false {product}

intx UseSSE = 4 {product}

bool UseSSE42Intrinsics = true {product}

bool UseSerialGC = false {product}

bool UseSharedSpaces = false {product}

bool UseSignalChaining = true {product}

bool UseSquareToLenIntrinsic = true {C2 product}

bool UseStoreImmI16 = false {ARCH product}

bool UseStringDeduplication = false {product}

bool UseSuperWord = true {C2 product}

bool UseTLAB = true {pd product}

bool UseThreadPriorities = true {pd product}

bool UseTransparentHugePages = false {product}

bool UseTypeProfile = true {product}

bool UseTypeSpeculation = true {C2 product}

bool UseUnalignedLoadStores = false {ARCH product}

bool UseVMInterruptibleIO = false {product}

bool UseXMMForArrayCopy = true {product}

bool UseXmmI2D = false {ARCH product}

bool UseXmmI2F = false {ARCH product}

bool UseXmmLoadAndClearUpper = true {ARCH product}

bool UseXmmRegToRegMoveAll = true

跑步后

jcmd [pid] VM.flags

我得到以下输出,该输出也未指定收集器:

-XX:CICompilerCount=2 -XX:InitialHeapSize=536870912 -XX:MaxHeapSize=536870912 -XX:MaxNewSize=178913280 -XX:MinHeapDeltaBytes=196608 -XX:NewSize=178913280 -XX:OldSize=357957632 -XX:+StartAttachListener -XX:+UseCompressedClassPointers -XX:+UseCompressedOops

这是怎么回事?我做错了什么吗?

回答:

在JDK 8中,如果未Use*GC设置标志,并且未按人体工程学选择并行GC,则使用串行GC。

自JDK

9起,在这种情况下,JDK-8068582的修复程序会自动打开-XX:+UseSerialGC

以上是 在Java 8中显示为默认情况下未选择可用的4个收集器(GC) 的全部内容, 来源链接: utcz.com/qa/433456.html

回到顶部