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

I have a container running a Spring Boot microservice. I am using openjdk version "1.8.0_212" under OpenJDK Runtime Environment (IcedTea 3.12.0) (Alpine 8.212.04-r0) When I use -XX:+PrintFlagsFinal flag and print the JVM parameters I expected to see

-XX:+UseParallelGC as true

But to my surprise none of the 4 collectors (-XX:+UseSerialGC,-XX:+UseParallelGC,-XX:+UseConcMarkSweepGC,–XX:+UseG1GC) were active.

Shown below is my 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

I'm running this using:

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

The flags_base.txt

-Xms512m -Xmx512m -XX:+PrintFlagsFinal -version

This is part of the output of -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

After running

jcmd [pid] VM.flags

I am getting the below output which also does not specify a collector:

-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

What Is happening here? Is there anything I'm doing wrong?

解决方案

In JDK 8, if no Use*GC flags are set, and if Parallel GC hasn't been chosen ergonomically, then Serial GC is used.

The fix for JDK-8068582 automatically turns on -XX:+UseSerialGC in such cases since JDK 9.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值