Найти устаревшие флаги JVM - PullRequest
0 голосов
/ 26 ноября 2018

Я использую java -XX:+PrintFlagsFinal -version согласно Распечатать все флаги JVM , чтобы сравнить результаты между различными JDK на моем пути обновления до JVM 11.

Однако я заметил, что результат PrintFlagsFinal по-прежнему будет возвращать устаревшие параметры - например, PrintGC все еще присутствует, хотя при запуске -XX:+PrintGC выдается предупреждение и вместо него запускается -Xlog:gc.

Так есть ли опция, подобная PrintFlagsFinal, которую я могу использовать, чтобы найти все опции, которые в настоящее время устарели, чтобы я мог избежать их использования?

(Знайте, что я могу вручную проверить примечания к выпуску, но задаюсь вопросом, есть ли встроенный способ обнаружения из JVM, подобный jdeprscan для устаревших зависимостей модуля)

Ответы [ 3 ]

0 голосов
/ 26 ноября 2018

Если вы можете запустить Java Flight Recording в приложении (например, в настройке разработки) и открыть его с помощью Java / JDK Mission Control (> = 6.0.0), тогда JMC проанализирует флаги, которые вы используете для запуска JVM, исказать, какие из них устарели.

0 голосов
/ 01 декабря 2018

Я добавил информацию об устаревании в VM Options Explorer в https://chriswhocodes.com/hotspot_option_differences.html Differences between JDK11 and JDK12 VM options

0 голосов
/ 26 ноября 2018

Существует несколько «уровней» устаревания: флаги ALIASED, DEPRECATED, OBSOLETE и EXPIRED со значением, описанным в arguments.cpp .

Помимо вышеупомянутых категорий, также существует устаревшая трассировкафлаги, которые заменены на Unified JVM Logging опции.

Наконец, есть некоторые флаги, не перечисленные выше, которые просто "устарели" в описании.

I'mне известно ни об одном месте, где собираются все эти устаревшие флаги, но их довольно просто извлечь из источников JVM: упомянутые семейства arguments.cpp и globals * .hpp .Я также рекомендую VM Options Explorer сайт с хорошо структурированной таблицей JVM-флагов HotSpot по версии.

Начиная с 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

ОБНОВЛЕНИЕ

Благодаря @chriswhocodes, В VM Options Explorer теперь отображаются устаревшие флаги JVM.

...