按照打印所有JVM标志的问题,我使用< code > Java-XX:PrintFlagsFinal-version 来比较在我升级到JVM 11的过程中不同JDK之间的结果。
我注意到,虽然 PrintFlagsFinal
的结果仍然会返回已弃用的选项——例如,即使运行 -XX:PrintGC
发出警告,PrintGC
仍然存在
那么是否有一个类似于PrintFlagsFinal
的选项可以用来查找当前已弃用的所有选项,以便避免使用它们?
(知道我可以手动查看发行说明,但不知道是否有一种内置的方法可以从JVM中查找,类似于jdeprscan
中不推荐的模块依赖项)
弃用有多个“级别”:ALIASED、DEPRECATED、OBSOLETE和EXPIRED标志,其含义如arguments.cpp所述。
除了上述类别之外,还有一些已弃用的跟踪标志被Unified JVM Logging选项替换。
最后,上面没有列出的一些标志在描述中只是“已弃用”。
我不知道有哪个地方将所有这些已弃用的标志收集在一起,但从JVM源中提取它们相当容易:提到的 arguments.cpp 和全局*. hpp系列。我还推荐VM选项资源管理器站点,其中包含按版本划分的结构良好的HotSpot JVM标志表。
从JDK 11开始,已弃用/过时/过期和其他不受支持的标志列表包括:
AggressiveOpts
AllowNonVirtualCalls
AssumeMP
CheckAssertionStatusDirectives
CheckEndorsedAndExtDirs
CompilerThreadHintNoPreempt
CreateMinidumpOnCrash
DefaultMaxRAMFraction
DeferPollingPageLoopCount
DeferThrSuspendLoopCount
EnableTracing
FastTLABRefill
FreqCountInvocations
IgnoreUnverifiableClassesDuringDump
InitialRAMFraction
InlineNotify
MaxGCMinorPauseMillis
MaxPermSize
MaxRAMFraction
MinRAMFraction
MonitorInUseLists
MustCallLoadClassInternal
NativeMonitorFlags
NativeMonitorSpinLimit
NativeMonitorTimeout
PermSize
PrintCompressedOopsMode
PrintGC
PrintGCDetails
PrintMalloc
PrintMallocFree
PrintSafepointStatistics
PrintSafepointStatisticsCount
PrintSafepointStatisticsTimeout
PrintSharedSpaces
SafepointSpinBeforeYield
SharedMiscCodeSize
SharedMiscDataSize
SharedReadOnlySize
SharedReadWriteSize
ShowSafepointMsgs
TraceBiasedLocking
TraceClassLoading
TraceClassLoadingPreorder
TraceClassPaths
TraceClassResolution
TraceClassUnloading
TraceExceptions
TraceJVMTIObjectTagging
TraceLoaderConstraints
TraceMonitorInflation
TraceRedefineClasses
TraceSafepointCleanupTime
TraceScavenge
UnlinkSymbolsALot
UnsyncloadClass
UseAppCDS
UseConcMarkSweepGC
UseLockedTracing
UseMembar
UseUTCFileTimestamp
VMThreadHintNoPreempt
更新
感谢@chriswhocode,VM选项资源管理器现在显示已弃用的JVM标志。
如果您可以在应用程序上运行Java飞行记录(例如在开发设置中)并使用Java / JDK任务控制(