Path: blob/master/src/hotspot/share/runtime/globals.hpp
40951 views
/*1* Copyright (c) 1997, 2021, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*22*/2324#ifndef SHARE_RUNTIME_GLOBALS_HPP25#define SHARE_RUNTIME_GLOBALS_HPP2627#include "compiler/compiler_globals_pd.hpp"28#include "runtime/globals_shared.hpp"29#include "utilities/align.hpp"30#include "utilities/globalDefinitions.hpp"31#include "utilities/macros.hpp"32#include CPU_HEADER(globals)33#include OS_HEADER(globals)34#include OS_CPU_HEADER(globals)3536// develop flags are settable / visible only during development and are constant in the PRODUCT version37// product flags are always settable / visible38// notproduct flags are settable / visible only during development and are not declared in the PRODUCT version39// develop_pd/product_pd flags are the same as develop/product, except that their default values40// are specified in platform-dependent header files.4142// Flags must be declared with the following number of parameters:43// non-pd flags:44// (type, name, default_value, doc), or45// (type, name, default_value, extra_attrs, doc)46// pd flags:47// (type, name, doc), or48// (type, name, extra_attrs, doc)4950// A flag must be declared with one of the following types:51// bool, int, uint, intx, uintx, size_t, ccstr, ccstrlist, double, or uint64_t.52// The type "ccstr" and "ccstrlist" are an alias for "const char*" and is used53// only in this file, because the macrology requires single-token type names.5455// The optional extra_attrs parameter may have one of the following values:56// DIAGNOSTIC, EXPERIMENTAL, or MANAGEABLE. Currently extra_attrs can be used57// only with product/product_pd flags.58//59// DIAGNOSTIC options are not meant for VM tuning or for product modes.60// They are to be used for VM quality assurance or field diagnosis61// of VM bugs. They are hidden so that users will not be encouraged to62// try them as if they were VM ordinary execution options. However, they63// are available in the product version of the VM. Under instruction64// from support engineers, VM customers can turn them on to collect65// diagnostic information about VM problems. To use a VM diagnostic66// option, you must first specify +UnlockDiagnosticVMOptions.67// (This master switch also affects the behavior of -Xprintflags.)68//69// EXPERIMENTAL flags are in support of features that are not70// part of the officially supported product, but are available71// for experimenting with. They could, for example, be performance72// features that may not have undergone full or rigorous QA, but which may73// help performance in some cases and released for experimentation74// by the community of users and developers. This flag also allows one to75// be able to build a fully supported product that nonetheless also76// ships with some unsupported, lightly tested, experimental features.77// Like the UnlockDiagnosticVMOptions flag above, there is a corresponding78// UnlockExperimentalVMOptions flag, which allows the control and79// modification of the experimental flags.80//81// Nota bene: neither diagnostic nor experimental options should be used casually,82// and they are not supported on production loads, except under explicit83// direction from support engineers.84//85// MANAGEABLE flags are writeable external product flags.86// They are dynamically writeable through the JDK management interface87// (com.sun.management.HotSpotDiagnosticMXBean API) and also through JConsole.88// These flags are external exported interface (see CCC). The list of89// manageable flags can be queried programmatically through the management90// interface.91//92// A flag can be made as "manageable" only if93// - the flag is defined in a CCC as an external exported interface.94// - the VM implementation supports dynamic setting of the flag.95// This implies that the VM must *always* query the flag variable96// and not reuse state related to the flag state at any given time.97// - you want the flag to be queried programmatically by the customers.98//99100//101// range is a macro that will expand to min and max arguments for range102// checking code if provided - see jvmFlagLimit.hpp103//104// constraint is a macro that will expand to custom function call105// for constraint checking if provided - see jvmFlagLimit.hpp106107// Default and minimum StringTable and SymbolTable size values108// Must be powers of 2109const size_t defaultStringTableSize = NOT_LP64(1024) LP64_ONLY(65536);110const size_t minimumStringTableSize = 128;111const size_t defaultSymbolTableSize = 32768; // 2^15112const size_t minimumSymbolTableSize = 1024;113114#ifdef _LP64115#define LP64_RUNTIME_FLAGS(develop, \116develop_pd, \117product, \118product_pd, \119notproduct, \120range, \121constraint) \122\123product(bool, UseCompressedOops, false, \124"Use 32-bit object references in 64-bit VM. " \125"lp64_product means flag is always constant in 32 bit VM") \126\127product(bool, UseCompressedClassPointers, false, \128"Use 32-bit class pointers in 64-bit VM. " \129"lp64_product means flag is always constant in 32 bit VM") \130\131product(intx, ObjectAlignmentInBytes, 8, \132"Default object alignment in bytes, 8 is minimum") \133range(8, 256) \134constraint(ObjectAlignmentInBytesConstraintFunc, AtParse)135136#else137// !_LP64138139#define LP64_RUNTIME_FLAGS(develop, \140develop_pd, \141product, \142product_pd, \143notproduct, \144range, \145constraint)146const bool UseCompressedOops = false;147const bool UseCompressedClassPointers = false;148const intx ObjectAlignmentInBytes = 8;149150#endif // _LP64151152#define RUNTIME_FLAGS(develop, \153develop_pd, \154product, \155product_pd, \156notproduct, \157range, \158constraint) \159\160notproduct(bool, CheckCompressedOops, true, \161"Generate checks in encoding/decoding code in debug VM") \162\163product(uintx, HeapSearchSteps, 3 PPC64_ONLY(+17), \164"Heap allocation steps through preferred address regions to find" \165" where it can allocate the heap. Number of steps to take per " \166"region.") \167range(1, max_uintx) \168\169product(uint, HandshakeTimeout, 0, DIAGNOSTIC, \170"If nonzero set a timeout in milliseconds for handshakes") \171\172product(bool, AlwaysSafeConstructors, false, EXPERIMENTAL, \173"Force safe construction, as if all fields are final.") \174\175product(bool, UnlockDiagnosticVMOptions, trueInDebug, DIAGNOSTIC, \176"Enable normal processing of flags relating to field diagnostics")\177\178product(bool, UnlockExperimentalVMOptions, false, EXPERIMENTAL, \179"Enable normal processing of flags relating to experimental " \180"features") \181\182product(bool, JavaMonitorsInStackTrace, true, \183"Print information about Java monitor locks when the stacks are " \184"dumped") \185\186product_pd(bool, UseLargePages, \187"Use large page memory") \188\189product_pd(bool, UseLargePagesIndividualAllocation, \190"Allocate large pages individually for better affinity") \191\192develop(bool, LargePagesIndividualAllocationInjectError, false, \193"Fail large pages individual allocation") \194\195product(bool, UseNUMA, false, \196"Use NUMA if available") \197\198product(bool, UseNUMAInterleaving, false, \199"Interleave memory across NUMA nodes if available") \200\201product(size_t, NUMAInterleaveGranularity, 2*M, \202"Granularity to use for NUMA interleaving on Windows OS") \203constraint(NUMAInterleaveGranularityConstraintFunc, AtParse) \204\205product(uintx, NUMAChunkResizeWeight, 20, \206"Percentage (0-100) used to weight the current sample when " \207"computing exponentially decaying average for " \208"AdaptiveNUMAChunkSizing") \209range(0, 100) \210\211product(size_t, NUMASpaceResizeRate, 1*G, \212"Do not reallocate more than this amount per collection") \213range(0, max_uintx) \214\215product(bool, UseAdaptiveNUMAChunkSizing, true, \216"Enable adaptive chunk sizing for NUMA") \217\218product(bool, NUMAStats, false, \219"Print NUMA stats in detailed heap information") \220\221product(uintx, NUMAPageScanRate, 256, \222"Maximum number of pages to include in the page scan procedure") \223range(0, max_uintx) \224\225product(bool, UseAES, false, \226"Control whether AES instructions are used when available") \227\228product(bool, UseFMA, false, \229"Control whether FMA instructions are used when available") \230\231product(bool, UseSHA, false, \232"Control whether SHA instructions are used when available") \233\234product(bool, UseGHASHIntrinsics, false, DIAGNOSTIC, \235"Use intrinsics for GHASH versions of crypto") \236\237product(bool, UseBASE64Intrinsics, false, \238"Use intrinsics for java.util.Base64") \239\240product(size_t, LargePageSizeInBytes, 0, \241"Maximum large page size used (0 will use the default large " \242"page size for the environment as the maximum)") \243range(0, max_uintx) \244\245product(size_t, LargePageHeapSizeThreshold, 128*M, \246"Use large pages if maximum heap is at least this big") \247range(0, max_uintx) \248\249product(bool, ForceTimeHighResolution, false, \250"Using high time resolution (for Win32 only)") \251\252develop(bool, TracePcPatching, false, \253"Trace usage of frame::patch_pc") \254\255develop(bool, TraceRelocator, false, \256"Trace the bytecode relocator") \257\258\259product(bool, SafepointALot, false, DIAGNOSTIC, \260"Generate a lot of safepoints. This works with " \261"GuaranteedSafepointInterval") \262\263product(bool, HandshakeALot, false, DIAGNOSTIC, \264"Generate a lot of handshakes. This works with " \265"GuaranteedSafepointInterval") \266\267product_pd(bool, BackgroundCompilation, \268"A thread requesting compilation is not blocked during " \269"compilation") \270\271product(bool, MethodFlushing, true, \272"Reclamation of zombie and not-entrant methods") \273\274develop(bool, VerifyStack, false, \275"Verify stack of each thread when it is entering a runtime call") \276\277product(bool, ForceUnreachable, false, DIAGNOSTIC, \278"Make all non code cache addresses to be unreachable by " \279"forcing use of 64bit literal fixups") \280\281develop(bool, TraceDerivedPointers, false, \282"Trace traversal of derived pointers on stack") \283\284notproduct(bool, TraceCodeBlobStacks, false, \285"Trace stack-walk of codeblobs") \286\287notproduct(bool, PrintRewrites, false, \288"Print methods that are being rewritten") \289\290product(bool, UseInlineCaches, true, \291"Use Inline Caches for virtual calls ") \292\293product(bool, InlineArrayCopy, true, DIAGNOSTIC, \294"Inline arraycopy native that is known to be part of " \295"base library DLL") \296\297product(bool, InlineObjectHash, true, DIAGNOSTIC, \298"Inline Object::hashCode() native that is known to be part " \299"of base library DLL") \300\301product(bool, InlineNatives, true, DIAGNOSTIC, \302"Inline natives that are known to be part of base library DLL") \303\304product(bool, InlineMathNatives, true, DIAGNOSTIC, \305"Inline SinD, CosD, etc.") \306\307product(bool, InlineClassNatives, true, DIAGNOSTIC, \308"Inline Class.isInstance, etc") \309\310product(bool, InlineThreadNatives, true, DIAGNOSTIC, \311"Inline Thread.currentThread, etc") \312\313product(bool, InlineUnsafeOps, true, DIAGNOSTIC, \314"Inline memory ops (native methods) from Unsafe") \315\316product(bool, CriticalJNINatives, false, \317"(Deprecated) Check for critical JNI entry points") \318\319product(bool, UseAESIntrinsics, false, DIAGNOSTIC, \320"Use intrinsics for AES versions of crypto") \321\322product(bool, UseAESCTRIntrinsics, false, DIAGNOSTIC, \323"Use intrinsics for the paralleled version of AES/CTR crypto") \324\325product(bool, UseMD5Intrinsics, false, DIAGNOSTIC, \326"Use intrinsics for MD5 crypto hash function") \327\328product(bool, UseSHA1Intrinsics, false, DIAGNOSTIC, \329"Use intrinsics for SHA-1 crypto hash function. " \330"Requires that UseSHA is enabled.") \331\332product(bool, UseSHA256Intrinsics, false, DIAGNOSTIC, \333"Use intrinsics for SHA-224 and SHA-256 crypto hash functions. " \334"Requires that UseSHA is enabled.") \335\336product(bool, UseSHA512Intrinsics, false, DIAGNOSTIC, \337"Use intrinsics for SHA-384 and SHA-512 crypto hash functions. " \338"Requires that UseSHA is enabled.") \339\340product(bool, UseSHA3Intrinsics, false, DIAGNOSTIC, \341"Use intrinsics for SHA3 crypto hash function. " \342"Requires that UseSHA is enabled.") \343\344product(bool, UseCRC32Intrinsics, false, DIAGNOSTIC, \345"use intrinsics for java.util.zip.CRC32") \346\347product(bool, UseCRC32CIntrinsics, false, DIAGNOSTIC, \348"use intrinsics for java.util.zip.CRC32C") \349\350product(bool, UseAdler32Intrinsics, false, DIAGNOSTIC, \351"use intrinsics for java.util.zip.Adler32") \352\353product(bool, UseVectorizedMismatchIntrinsic, false, DIAGNOSTIC, \354"Enables intrinsification of ArraysSupport.vectorizedMismatch()") \355\356product(bool, UseCopySignIntrinsic, false, DIAGNOSTIC, \357"Enables intrinsification of Math.copySign") \358\359product(bool, UseSignumIntrinsic, false, DIAGNOSTIC, \360"Enables intrinsification of Math.signum") \361\362product(ccstrlist, DisableIntrinsic, "", DIAGNOSTIC, \363"do not expand intrinsics whose (internal) names appear here") \364constraint(DisableIntrinsicConstraintFunc,AfterErgo) \365\366product(ccstrlist, ControlIntrinsic, "", DIAGNOSTIC, \367"Control intrinsics using a list of +/- (internal) names, " \368"separated by commas") \369constraint(ControlIntrinsicConstraintFunc,AfterErgo) \370\371develop(bool, TraceCallFixup, false, \372"Trace all call fixups") \373\374develop(bool, DeoptimizeALot, false, \375"Deoptimize at every exit from the runtime system") \376\377notproduct(ccstrlist, DeoptimizeOnlyAt, "", \378"A comma separated list of bcis to deoptimize at") \379\380develop(bool, DeoptimizeRandom, false, \381"Deoptimize random frames on random exit from the runtime system")\382\383notproduct(bool, ZombieALot, false, \384"Create zombies (non-entrant) at exit from the runtime system") \385\386notproduct(bool, WalkStackALot, false, \387"Trace stack (no print) at every exit from the runtime system") \388\389develop(bool, DeoptimizeObjectsALot, false, \390"For testing purposes concurrent threads revert optimizations " \391"based on escape analysis at intervals given with " \392"DeoptimizeObjectsALotInterval=n. The thread count is given " \393"with DeoptimizeObjectsALotThreadCountSingle and " \394"DeoptimizeObjectsALotThreadCountAll.") \395\396develop(uint64_t, DeoptimizeObjectsALotInterval, 5, \397"Interval for DeoptimizeObjectsALot.") \398range(0, max_jlong) \399\400develop(int, DeoptimizeObjectsALotThreadCountSingle, 1, \401"The number of threads that revert optimizations based on " \402"escape analysis for a single thread if DeoptimizeObjectsALot " \403"is enabled. The target thread is selected round robin." ) \404range(0, max_jint) \405\406develop(int, DeoptimizeObjectsALotThreadCountAll, 1, \407"The number of threads that revert optimizations based on " \408"escape analysis for all threads if DeoptimizeObjectsALot " \409"is enabled." ) \410range(0, max_jint) \411\412notproduct(bool, VerifyLastFrame, false, \413"Verify oops on last frame on entry to VM") \414\415product(bool, SafepointTimeout, false, \416"Time out and warn or fail after SafepointTimeoutDelay " \417"milliseconds if failed to reach safepoint") \418\419product(bool, AbortVMOnSafepointTimeout, false, DIAGNOSTIC, \420"Abort upon failure to reach safepoint (see SafepointTimeout)") \421\422product(bool, AbortVMOnVMOperationTimeout, false, DIAGNOSTIC, \423"Abort upon failure to complete VM operation promptly") \424\425product(intx, AbortVMOnVMOperationTimeoutDelay, 1000, DIAGNOSTIC, \426"Delay in milliseconds for option AbortVMOnVMOperationTimeout") \427range(0, max_intx) \428\429product(bool, MaxFDLimit, true, \430"Bump the number of file descriptors to maximum (Unix only)") \431\432product(bool, LogEvents, true, DIAGNOSTIC, \433"Enable the various ring buffer event logs") \434\435product(uintx, LogEventsBufferEntries, 20, DIAGNOSTIC, \436"Number of ring buffer event logs") \437range(1, NOT_LP64(1*K) LP64_ONLY(1*M)) \438\439product(bool, BytecodeVerificationRemote, true, DIAGNOSTIC, \440"Enable the Java bytecode verifier for remote classes") \441\442product(bool, BytecodeVerificationLocal, false, DIAGNOSTIC, \443"Enable the Java bytecode verifier for local classes") \444\445develop(bool, VerifyStackAtCalls, false, \446"Verify that the stack pointer is unchanged after calls") \447\448develop(bool, TraceJavaAssertions, false, \449"Trace java language assertions") \450\451notproduct(bool, VerifyCodeCache, false, \452"Verify code cache on memory allocation/deallocation") \453\454develop(bool, UseMallocOnly, false, \455"Use only malloc/free for allocation (no resource area/arena)") \456\457develop(bool, ZapResourceArea, trueInDebug, \458"Zap freed resource/arena space with 0xABABABAB") \459\460notproduct(bool, ZapVMHandleArea, trueInDebug, \461"Zap freed VM handle space with 0xBCBCBCBC") \462\463notproduct(bool, ZapStackSegments, trueInDebug, \464"Zap allocated/freed stack segments with 0xFADFADED") \465\466develop(bool, ZapUnusedHeapArea, trueInDebug, \467"Zap unused heap space with 0xBAADBABE") \468\469develop(bool, CheckZapUnusedHeapArea, false, \470"Check zapping of unused heap space") \471\472develop(bool, ZapFillerObjects, trueInDebug, \473"Zap filler objects with 0xDEAFBABE") \474\475product(bool, ExecutingUnitTests, false, \476"Whether the JVM is running unit tests or not") \477\478develop(uintx, ErrorHandlerTest, 0, \479"If > 0, provokes an error after VM initialization; the value " \480"determines which error to provoke. See controlled_crash() " \481"in vmError.cpp.") \482range(0, 17) \483\484develop(uintx, TestCrashInErrorHandler, 0, \485"If > 0, provokes an error inside VM error handler (a secondary " \486"crash). see controlled_crash() in vmError.cpp") \487range(0, 17) \488\489develop(bool, TestSafeFetchInErrorHandler, false , \490"If true, tests SafeFetch inside error handler.") \491\492develop(bool, TestUnresponsiveErrorHandler, false, \493"If true, simulates an unresponsive error handler.") \494\495develop(bool, Verbose, false, \496"Print additional debugging information from other modes") \497\498develop(bool, PrintMiscellaneous, false, \499"Print uncategorized debugging information (requires +Verbose)") \500\501develop(bool, WizardMode, false, \502"Print much more debugging information") \503\504product(bool, ShowMessageBoxOnError, false, \505"Keep process alive on VM fatal error") \506\507product(bool, CreateCoredumpOnCrash, true, \508"Create core/mini dump on VM fatal error") \509\510product(uint64_t, ErrorLogTimeout, 2 * 60, \511"Timeout, in seconds, to limit the time spent on writing an " \512"error log in case of a crash.") \513range(0, (uint64_t)max_jlong/1000) \514\515product(bool, SuppressFatalErrorMessage, false, \516"Report NO fatal error message (avoid deadlock)") \517\518product(ccstrlist, OnError, "", \519"Run user-defined commands on fatal error; see VMError.cpp " \520"for examples") \521\522product(ccstrlist, OnOutOfMemoryError, "", \523"Run user-defined commands on first java.lang.OutOfMemoryError " \524"thrown from JVM") \525\526product(bool, HeapDumpBeforeFullGC, false, MANAGEABLE, \527"Dump heap to file before any major stop-the-world GC") \528\529product(bool, HeapDumpAfterFullGC, false, MANAGEABLE, \530"Dump heap to file after any major stop-the-world GC") \531\532product(bool, HeapDumpOnOutOfMemoryError, false, MANAGEABLE, \533"Dump heap to file when java.lang.OutOfMemoryError is thrown " \534"from JVM") \535\536product(ccstr, HeapDumpPath, NULL, MANAGEABLE, \537"When HeapDumpOnOutOfMemoryError is on, the path (filename or " \538"directory) of the dump file (defaults to java_pid<pid>.hprof " \539"in the working directory)") \540\541product(intx, HeapDumpGzipLevel, 0, MANAGEABLE, \542"When HeapDumpOnOutOfMemoryError is on, the gzip compression " \543"level of the dump file. 0 (the default) disables gzip " \544"compression. Otherwise the level must be between 1 and 9.") \545range(0, 9) \546\547product(ccstr, NativeMemoryTracking, "off", \548"Native memory tracking options") \549\550product(bool, PrintNMTStatistics, false, DIAGNOSTIC, \551"Print native memory tracking summary data if it is on") \552\553product(bool, LogCompilation, false, DIAGNOSTIC, \554"Log compilation activity in detail to LogFile") \555\556product(bool, PrintCompilation, false, \557"Print compilations") \558\559product(intx, RepeatCompilation, 0, DIAGNOSTIC, \560"Repeat compilation without installing code (number of times)") \561range(0, max_jint) \562\563product(bool, PrintExtendedThreadInfo, false, \564"Print more information in thread dump") \565\566product(intx, ScavengeRootsInCode, 2, DIAGNOSTIC, \567"0: do not allow scavengable oops in the code cache; " \568"1: allow scavenging from the code cache; " \569"2: emit as many constants as the compiler can see") \570range(0, 2) \571\572product(bool, AlwaysRestoreFPU, false, \573"Restore the FPU control word after every JNI call (expensive)") \574\575product(bool, PrintCompilation2, false, DIAGNOSTIC, \576"Print additional statistics per compilation") \577\578product(bool, PrintAdapterHandlers, false, DIAGNOSTIC, \579"Print code generated for i2c/c2i adapters") \580\581product(bool, VerifyAdapterCalls, trueInDebug, DIAGNOSTIC, \582"Verify that i2c/c2i adapters are called properly") \583\584develop(bool, VerifyAdapterSharing, false, \585"Verify that the code for shared adapters is the equivalent") \586\587product(bool, PrintAssembly, false, DIAGNOSTIC, \588"Print assembly code (using external disassembler.so)") \589\590product(ccstr, PrintAssemblyOptions, NULL, DIAGNOSTIC, \591"Print options string passed to disassembler.so") \592\593notproduct(bool, PrintNMethodStatistics, false, \594"Print a summary statistic for the generated nmethods") \595\596product(bool, PrintNMethods, false, DIAGNOSTIC, \597"Print assembly code for nmethods when generated") \598\599product(bool, PrintNativeNMethods, false, DIAGNOSTIC, \600"Print assembly code for native nmethods when generated") \601\602develop(bool, PrintDebugInfo, false, \603"Print debug information for all nmethods when generated") \604\605develop(bool, PrintRelocations, false, \606"Print relocation information for all nmethods when generated") \607\608develop(bool, PrintDependencies, false, \609"Print dependency information for all nmethods when generated") \610\611develop(bool, PrintExceptionHandlers, false, \612"Print exception handler tables for all nmethods when generated") \613\614develop(bool, StressCompiledExceptionHandlers, false, \615"Exercise compiled exception handlers") \616\617develop(bool, InterceptOSException, false, \618"Start debugger when an implicit OS (e.g. NULL) " \619"exception happens") \620\621product(bool, PrintCodeCache, false, \622"Print the code cache memory usage when exiting") \623\624develop(bool, PrintCodeCache2, false, \625"Print detailed usage information on the code cache when exiting")\626\627product(bool, PrintCodeCacheOnCompilation, false, \628"Print the code cache memory usage each time a method is " \629"compiled") \630\631product(bool, PrintCodeHeapAnalytics, false, DIAGNOSTIC, \632"Print code heap usage statistics on exit and on full condition") \633\634product(bool, PrintStubCode, false, DIAGNOSTIC, \635"Print generated stub code") \636\637product(bool, StackTraceInThrowable, true, \638"Collect backtrace in throwable when exception happens") \639\640product(bool, OmitStackTraceInFastThrow, true, \641"Omit backtraces for some 'hot' exceptions in optimized code") \642\643product(bool, ShowCodeDetailsInExceptionMessages, true, MANAGEABLE, \644"Show exception messages from RuntimeExceptions that contain " \645"snippets of the failing code. Disable this to improve privacy.") \646\647product(bool, PrintWarnings, true, \648"Print JVM warnings to output stream") \649\650product(bool, RegisterFinalizersAtInit, true, \651"Register finalizable objects at end of Object.<init> or " \652"after allocation") \653\654develop(bool, RegisterReferences, true, \655"Tell whether the VM should register soft/weak/final/phantom " \656"references") \657\658develop(bool, PrintCodeCacheExtension, false, \659"Print extension of code cache") \660\661develop(bool, UsePrivilegedStack, true, \662"Enable the security JVM functions") \663\664product(bool, ClassUnloading, true, \665"Do unloading of classes") \666\667product(bool, ClassUnloadingWithConcurrentMark, true, \668"Do unloading of classes with a concurrent marking cycle") \669\670notproduct(bool, PrintSystemDictionaryAtExit, false, \671"Print the system dictionary at exit") \672\673notproduct(bool, PrintClassLoaderDataGraphAtExit, false, \674"Print the class loader data graph at exit") \675\676product(bool, DynamicallyResizeSystemDictionaries, true, DIAGNOSTIC, \677"Dynamically resize system dictionaries as needed") \678\679product(bool, AlwaysLockClassLoader, false, \680"(Deprecated) Require the VM to acquire the class loader lock " \681"before calling loadClass() even for class loaders registering " \682"as parallel capable") \683\684product(bool, AllowParallelDefineClass, false, \685"Allow parallel defineClass requests for class loaders " \686"registering as parallel capable") \687\688product_pd(bool, DontYieldALot, \689"Throw away obvious excess yield calls") \690\691product(bool, DisablePrimordialThreadGuardPages, false, EXPERIMENTAL, \692"Disable the use of stack guard pages if the JVM is loaded " \693"on the primordial process thread") \694\695/* notice: the max range value here is max_jint, not max_intx */ \696/* because of overflow issue */ \697product(intx, AsyncDeflationInterval, 250, DIAGNOSTIC, \698"Async deflate idle monitors every so many milliseconds when " \699"MonitorUsedDeflationThreshold is exceeded (0 is off).") \700range(0, max_jint) \701\702product(size_t, AvgMonitorsPerThreadEstimate, 1024, DIAGNOSTIC, \703"Used to estimate a variable ceiling based on number of threads " \704"for use with MonitorUsedDeflationThreshold (0 is off).") \705range(0, max_uintx) \706\707/* notice: the max range value here is max_jint, not max_intx */ \708/* because of overflow issue */ \709product(intx, MonitorDeflationMax, 1000000, DIAGNOSTIC, \710"The maximum number of monitors to deflate, unlink and delete " \711"at one time (minimum is 1024).") \712range(1024, max_jint) \713\714product(intx, MonitorUsedDeflationThreshold, 90, DIAGNOSTIC, \715"Percentage of used monitors before triggering deflation (0 is " \716"off). The check is performed on GuaranteedSafepointInterval " \717"or AsyncDeflationInterval.") \718range(0, 100) \719\720product(uintx, NoAsyncDeflationProgressMax, 3, DIAGNOSTIC, \721"Max number of no progress async deflation attempts to tolerate " \722"before adjusting the in_use_list_ceiling up (0 is off).") \723range(0, max_uintx) \724\725product(intx, hashCode, 5, EXPERIMENTAL, \726"(Unstable) select hashCode generation algorithm") \727\728product(bool, FilterSpuriousWakeups, true, \729"When true prevents OS-level spurious, or premature, wakeups " \730"from Object.wait (Ignored for Windows)") \731\732product(bool, ReduceSignalUsage, false, \733"Reduce the use of OS signals in Java and/or the VM") \734\735develop(bool, LoadLineNumberTables, true, \736"Tell whether the class file parser loads line number tables") \737\738develop(bool, LoadLocalVariableTables, true, \739"Tell whether the class file parser loads local variable tables") \740\741develop(bool, LoadLocalVariableTypeTables, true, \742"Tell whether the class file parser loads local variable type" \743"tables") \744\745product(bool, AllowUserSignalHandlers, false, \746"Application will install primary signal handlers for the JVM " \747"(Unix only)") \748\749product(bool, UseSignalChaining, true, \750"Use signal-chaining to invoke signal handlers installed " \751"by the application (Unix only)") \752\753product(bool, RestoreMXCSROnJNICalls, false, \754"Restore MXCSR when returning from JNI calls") \755\756product(bool, CheckJNICalls, false, \757"Verify all arguments to JNI calls") \758\759product(bool, UseFastJNIAccessors, true, \760"Use optimized versions of Get<Primitive>Field") \761\762product(intx, MaxJNILocalCapacity, 65536, \763"Maximum allowable local JNI handle capacity to " \764"EnsureLocalCapacity() and PushLocalFrame(), " \765"where <= 0 is unlimited, default: 65536") \766range(min_intx, max_intx) \767\768product(bool, EagerXrunInit, false, \769"Eagerly initialize -Xrun libraries; allows startup profiling, " \770"but not all -Xrun libraries may support the state of the VM " \771"at this time") \772\773product(bool, PreserveAllAnnotations, false, \774"Preserve RuntimeInvisibleAnnotations as well " \775"as RuntimeVisibleAnnotations") \776\777develop(uintx, PreallocatedOutOfMemoryErrorCount, 4, \778"Number of OutOfMemoryErrors preallocated with backtrace") \779\780product(bool, UseXMMForArrayCopy, false, \781"Use SSE2 MOVQ instruction for Arraycopy") \782\783notproduct(bool, PrintFieldLayout, false, \784"Print field layout for each class") \785\786/* Need to limit the extent of the padding to reasonable size. */\787/* 8K is well beyond the reasonable HW cache line size, even with */\788/* aggressive prefetching, while still leaving the room for segregating */\789/* among the distinct pages. */\790product(intx, ContendedPaddingWidth, 128, \791"How many bytes to pad the fields/classes marked @Contended with")\792range(0, 8192) \793constraint(ContendedPaddingWidthConstraintFunc,AfterErgo) \794\795product(bool, EnableContended, true, \796"Enable @Contended annotation support") \797\798product(bool, RestrictContended, true, \799"Restrict @Contended to trusted classes") \800\801product(bool, UseBiasedLocking, false, \802"(Deprecated) Enable biased locking in JVM") \803\804product(intx, BiasedLockingStartupDelay, 0, \805"(Deprecated) Number of milliseconds to wait before enabling " \806"biased locking") \807range(0, (intx)(max_jint-(max_jint%PeriodicTask::interval_gran))) \808constraint(BiasedLockingStartupDelayFunc,AfterErgo) \809\810product(bool, PrintBiasedLockingStatistics, false, DIAGNOSTIC, \811"(Deprecated) Print statistics of biased locking in JVM") \812\813product(intx, BiasedLockingBulkRebiasThreshold, 20, \814"(Deprecated) Threshold of number of revocations per type to " \815"try to rebias all objects in the heap of that type") \816range(0, max_intx) \817constraint(BiasedLockingBulkRebiasThresholdFunc,AfterErgo) \818\819product(intx, BiasedLockingBulkRevokeThreshold, 40, \820"(Deprecated) Threshold of number of revocations per type to " \821"permanently revoke biases of all objects in the heap of that " \822"type") \823range(0, max_intx) \824constraint(BiasedLockingBulkRevokeThresholdFunc,AfterErgo) \825\826product(intx, BiasedLockingDecayTime, 25000, \827"(Deprecated) Decay time (in milliseconds) to re-enable bulk " \828"rebiasing of a type after previous bulk rebias") \829range(500, max_intx) \830constraint(BiasedLockingDecayTimeFunc,AfterErgo) \831\832product(intx, DiagnoseSyncOnValueBasedClasses, 0, DIAGNOSTIC, \833"Detect and take action upon identifying synchronization on " \834"value based classes. Modes: " \835"0: off; " \836"1: exit with fatal error; " \837"2: log message to stdout. Output file can be specified with " \838" -Xlog:valuebasedclasses. If JFR is running it will " \839" also generate JFR events.") \840range(0, 2) \841\842product(bool, ExitOnOutOfMemoryError, false, \843"JVM exits on the first occurrence of an out-of-memory error " \844"thrown from JVM") \845\846product(bool, CrashOnOutOfMemoryError, false, \847"JVM aborts, producing an error log and core/mini dump, on the " \848"first occurrence of an out-of-memory error thrown from JVM") \849\850/* tracing */ \851\852develop(bool, StressRewriter, false, \853"Stress linktime bytecode rewriting") \854\855product(ccstr, TraceJVMTI, NULL, \856"Trace flags for JVMTI functions and events") \857\858product(bool, StressLdcRewrite, false, DIAGNOSTIC, \859"Force ldc -> ldc_w rewrite during RedefineClasses. " \860"This option can change an EMCP method into an obsolete method " \861"and can affect tests that expect specific methods to be EMCP. " \862"This option should be used with caution.") \863\864product(bool, AllowRedefinitionToAddDeleteMethods, false, \865"(Deprecated) Allow redefinition to add and delete private " \866"static or final methods for compatibility with old releases") \867\868develop(bool, TraceBytecodes, false, \869"Trace bytecode execution") \870\871develop(bool, TraceICs, false, \872"Trace inline cache changes") \873\874notproduct(bool, TraceInvocationCounterOverflow, false, \875"Trace method invocation counter overflow") \876\877develop(bool, TraceInlineCacheClearing, false, \878"Trace clearing of inline caches in nmethods") \879\880develop(bool, TraceDependencies, false, \881"Trace dependencies") \882\883develop(bool, VerifyDependencies, trueInDebug, \884"Exercise and verify the compilation dependency mechanism") \885\886develop(bool, TraceNewOopMapGeneration, false, \887"Trace OopMapGeneration") \888\889develop(bool, TraceNewOopMapGenerationDetailed, false, \890"Trace OopMapGeneration: print detailed cell states") \891\892develop(bool, TimeOopMap, false, \893"Time calls to GenerateOopMap::compute_map() in sum") \894\895develop(bool, TimeOopMap2, false, \896"Time calls to GenerateOopMap::compute_map() individually") \897\898develop(bool, TraceOopMapRewrites, false, \899"Trace rewriting of methods during oop map generation") \900\901develop(bool, TraceICBuffer, false, \902"Trace usage of IC buffer") \903\904develop(bool, TraceCompiledIC, false, \905"Trace changes of compiled IC") \906\907develop(bool, FLSVerifyDictionary, false, \908"Do lots of (expensive) FLS dictionary verification") \909\910\911notproduct(bool, CheckMemoryInitialization, false, \912"Check memory initialization") \913\914product(uintx, ProcessDistributionStride, 4, \915"Stride through processors when distributing processes") \916range(0, max_juint) \917\918develop(bool, TraceFinalizerRegistration, false, \919"Trace registration of final references") \920\921product(bool, IgnoreEmptyClassPaths, false, \922"Ignore empty path elements in -classpath") \923\924product(bool, PrintHeapAtSIGBREAK, true, \925"Print heap layout in response to SIGBREAK") \926\927product(bool, PrintClassHistogram, false, MANAGEABLE, \928"Print a histogram of class instances") \929\930product(double, ObjectCountCutOffPercent, 0.5, EXPERIMENTAL, \931"The percentage of the used heap that the instances of a class " \932"must occupy for the class to generate a trace event") \933range(0.0, 100.0) \934\935/* JVMTI heap profiling */ \936\937product(bool, VerifyBeforeIteration, false, DIAGNOSTIC, \938"Verify memory system before JVMTI iteration") \939\940/* compiler */ \941\942/* notice: the max range value here is max_jint, not max_intx */ \943/* because of overflow issue */ \944product(intx, CICompilerCount, CI_COMPILER_COUNT, \945"Number of compiler threads to run") \946range(0, max_jint) \947constraint(CICompilerCountConstraintFunc, AfterErgo) \948\949product(bool, UseDynamicNumberOfCompilerThreads, true, \950"Dynamically choose the number of parallel compiler threads") \951\952product(bool, ReduceNumberOfCompilerThreads, true, DIAGNOSTIC, \953"Reduce the number of parallel compiler threads when they " \954"are not used") \955\956product(bool, TraceCompilerThreads, false, DIAGNOSTIC, \957"Trace creation and removal of compiler threads") \958\959develop(bool, InjectCompilerCreationFailure, false, \960"Inject thread creation failures for " \961"UseDynamicNumberOfCompilerThreads") \962\963develop(bool, GenerateSynchronizationCode, true, \964"generate locking/unlocking code for synchronized methods and " \965"monitors") \966\967develop(bool, GenerateRangeChecks, true, \968"Generate range checks for array accesses") \969\970product_pd(bool, ImplicitNullChecks, DIAGNOSTIC, \971"Generate code for implicit null checks") \972\973product_pd(bool, TrapBasedNullChecks, \974"Generate code for null checks that uses a cmp and trap " \975"instruction raising SIGTRAP. This is only used if an access to" \976"null (+offset) will not raise a SIGSEGV, i.e.," \977"ImplicitNullChecks don't work (PPC64).") \978\979product(bool, EnableThreadSMRExtraValidityChecks, true, DIAGNOSTIC, \980"Enable Thread SMR extra validity checks") \981\982product(bool, EnableThreadSMRStatistics, trueInDebug, DIAGNOSTIC, \983"Enable Thread SMR Statistics") \984\985product(bool, UseNotificationThread, true, \986"Use Notification Thread") \987\988product(bool, Inline, true, \989"Enable inlining") \990\991product(bool, ClipInlining, true, \992"Clip inlining if aggregate method exceeds DesiredMethodLimit") \993\994develop(bool, UseCHA, true, \995"Enable CHA") \996\997product(bool, UseVtableBasedCHA, true, DIAGNOSTIC, \998"Use vtable information during CHA") \999\1000product(bool, UseTypeProfile, true, \1001"Check interpreter profile for historically monomorphic calls") \1002\1003product(bool, PrintInlining, false, DIAGNOSTIC, \1004"Print inlining optimizations") \1005\1006product(bool, UsePopCountInstruction, false, \1007"Use population count instruction") \1008\1009develop(bool, EagerInitialization, false, \1010"Eagerly initialize classes if possible") \1011\1012product(bool, LogTouchedMethods, false, DIAGNOSTIC, \1013"Log methods which have been ever touched in runtime") \1014\1015product(bool, PrintTouchedMethodsAtExit, false, DIAGNOSTIC, \1016"Print all methods that have been ever touched in runtime") \1017\1018develop(bool, TraceMethodReplacement, false, \1019"Print when methods are replaced do to recompilation") \1020\1021develop(bool, PrintMethodFlushing, false, \1022"Print the nmethods being flushed") \1023\1024product(bool, PrintMethodFlushingStatistics, false, DIAGNOSTIC, \1025"print statistics about method flushing") \1026\1027product(intx, HotMethodDetectionLimit, 100000, DIAGNOSTIC, \1028"Number of compiled code invocations after which " \1029"the method is considered as hot by the flusher") \1030range(1, max_jint) \1031\1032product(intx, MinPassesBeforeFlush, 10, DIAGNOSTIC, \1033"Minimum number of sweeper passes before an nmethod " \1034"can be flushed") \1035range(0, max_intx) \1036\1037product(bool, UseCodeAging, true, \1038"Insert counter to detect warm methods") \1039\1040product(bool, StressCodeAging, false, DIAGNOSTIC, \1041"Start with counters compiled in") \1042\1043develop(bool, StressCodeBuffers, false, \1044"Exercise code buffer expansion and other rare state changes") \1045\1046product(bool, DebugNonSafepoints, trueInDebug, DIAGNOSTIC, \1047"Generate extra debugging information for non-safepoints in " \1048"nmethods") \1049\1050product(bool, PrintVMOptions, false, \1051"Print flags that appeared on the command line") \1052\1053product(bool, IgnoreUnrecognizedVMOptions, false, \1054"Ignore unrecognized VM options") \1055\1056product(bool, PrintCommandLineFlags, false, \1057"Print flags specified on command line or set by ergonomics") \1058\1059product(bool, PrintFlagsInitial, false, \1060"Print all VM flags before argument processing and exit VM") \1061\1062product(bool, PrintFlagsFinal, false, \1063"Print all VM flags after argument and ergonomic processing") \1064\1065notproduct(bool, PrintFlagsWithComments, false, \1066"Print all VM flags with default values and descriptions and " \1067"exit") \1068\1069product(bool, PrintFlagsRanges, false, \1070"Print VM flags and their ranges") \1071\1072product(bool, SerializeVMOutput, true, DIAGNOSTIC, \1073"Use a mutex to serialize output to tty and LogFile") \1074\1075product(bool, DisplayVMOutput, true, DIAGNOSTIC, \1076"Display all VM output on the tty, independently of LogVMOutput") \1077\1078product(bool, LogVMOutput, false, DIAGNOSTIC, \1079"Save VM output to LogFile") \1080\1081product(ccstr, LogFile, NULL, DIAGNOSTIC, \1082"If LogVMOutput or LogCompilation is on, save VM output to " \1083"this file [default: ./hotspot_pid%p.log] (%p replaced with pid)")\1084\1085product(ccstr, ErrorFile, NULL, \1086"If an error occurs, save the error data to this file " \1087"[default: ./hs_err_pid%p.log] (%p replaced with pid)") \1088\1089product(bool, ExtensiveErrorReports, \1090PRODUCT_ONLY(false) NOT_PRODUCT(true), \1091"Error reports are more extensive.") \1092\1093product(bool, DisplayVMOutputToStderr, false, \1094"If DisplayVMOutput is true, display all VM output to stderr") \1095\1096product(bool, DisplayVMOutputToStdout, false, \1097"If DisplayVMOutput is true, display all VM output to stdout") \1098\1099product(bool, ErrorFileToStderr, false, \1100"If true, error data is printed to stderr instead of a file") \1101\1102product(bool, ErrorFileToStdout, false, \1103"If true, error data is printed to stdout instead of a file") \1104\1105product(bool, UseHeavyMonitors, false, \1106"use heavyweight instead of lightweight Java monitors") \1107\1108product(bool, PrintStringTableStatistics, false, \1109"print statistics about the StringTable and SymbolTable") \1110\1111product(bool, VerifyStringTableAtExit, false, DIAGNOSTIC, \1112"verify StringTable contents at exit") \1113\1114notproduct(bool, PrintSymbolTableSizeHistogram, false, \1115"print histogram of the symbol table") \1116\1117product(ccstr, AbortVMOnException, NULL, DIAGNOSTIC, \1118"Call fatal if this exception is thrown. Example: " \1119"java -XX:AbortVMOnException=java.lang.NullPointerException Foo") \1120\1121product(ccstr, AbortVMOnExceptionMessage, NULL, DIAGNOSTIC, \1122"Call fatal if the exception pointed by AbortVMOnException " \1123"has this message") \1124\1125develop(bool, DebugVtables, false, \1126"add debugging code to vtable dispatch") \1127\1128notproduct(bool, PrintVtableStats, false, \1129"print vtables stats at end of run") \1130\1131develop(bool, TraceCreateZombies, false, \1132"trace creation of zombie nmethods") \1133\1134product(bool, RangeCheckElimination, true, \1135"Eliminate range checks") \1136\1137develop_pd(bool, UncommonNullCast, \1138"track occurrences of null in casts; adjust compiler tactics") \1139\1140develop(bool, TypeProfileCasts, true, \1141"treat casts like calls for purposes of type profiling") \1142\1143develop(bool, TraceLivenessGen, false, \1144"Trace the generation of liveness analysis information") \1145\1146notproduct(bool, TraceLivenessQuery, false, \1147"Trace queries of liveness analysis information") \1148\1149notproduct(bool, CollectIndexSetStatistics, false, \1150"Collect information about IndexSets") \1151\1152develop(intx, FastAllocateSizeLimit, 128*K, \1153/* Note: This value is zero mod 1<<13 for a cheap sparc set. */ \1154"Inline allocations larger than this in doublewords must go slow")\1155\1156product_pd(bool, CompactStrings, \1157"Enable Strings to use single byte chars in backing store") \1158\1159product_pd(uintx, TypeProfileLevel, \1160"=XYZ, with Z: Type profiling of arguments at call; " \1161"Y: Type profiling of return value at call; " \1162"X: Type profiling of parameters to methods; " \1163"X, Y and Z in 0=off ; 1=jsr292 only; 2=all methods") \1164constraint(TypeProfileLevelConstraintFunc, AfterErgo) \1165\1166product(intx, TypeProfileArgsLimit, 2, \1167"max number of call arguments to consider for type profiling") \1168range(0, 16) \1169\1170product(intx, TypeProfileParmsLimit, 2, \1171"max number of incoming parameters to consider for type profiling"\1172", -1 for all") \1173range(-1, 64) \1174\1175/* statistics */ \1176develop(bool, CountCompiledCalls, false, \1177"Count method invocations") \1178\1179notproduct(bool, ICMissHistogram, false, \1180"Produce histogram of IC misses") \1181\1182/* interpreter */ \1183product_pd(bool, RewriteBytecodes, \1184"Allow rewriting of bytecodes (bytecodes are not immutable)") \1185\1186product_pd(bool, RewriteFrequentPairs, \1187"Rewrite frequently used bytecode pairs into a single bytecode") \1188\1189product(bool, PrintInterpreter, false, DIAGNOSTIC, \1190"Print the generated interpreter code") \1191\1192product(bool, UseInterpreter, true, \1193"Use interpreter for non-compiled methods") \1194\1195develop(bool, UseFastSignatureHandlers, true, \1196"Use fast signature handlers for native calls") \1197\1198product(bool, UseLoopCounter, true, \1199"Increment invocation counter on backward branch") \1200\1201product_pd(bool, UseOnStackReplacement, \1202"Use on stack replacement, calls runtime if invoc. counter " \1203"overflows in loop") \1204\1205notproduct(bool, TraceOnStackReplacement, false, \1206"Trace on stack replacement") \1207\1208product_pd(bool, PreferInterpreterNativeStubs, \1209"Use always interpreter stubs for native methods invoked via " \1210"interpreter") \1211\1212develop(bool, CountBytecodes, false, \1213"Count number of bytecodes executed") \1214\1215develop(bool, PrintBytecodeHistogram, false, \1216"Print histogram of the executed bytecodes") \1217\1218develop(bool, PrintBytecodePairHistogram, false, \1219"Print histogram of the executed bytecode pairs") \1220\1221product(bool, PrintSignatureHandlers, false, DIAGNOSTIC, \1222"Print code generated for native method signature handlers") \1223\1224develop(bool, VerifyOops, false, \1225"Do plausibility checks for oops") \1226\1227develop(bool, CheckUnhandledOops, false, \1228"Check for unhandled oops in VM code") \1229\1230develop(bool, VerifyJNIFields, trueInDebug, \1231"Verify jfieldIDs for instance fields") \1232\1233notproduct(bool, VerifyJNIEnvThread, false, \1234"Verify JNIEnv.thread == Thread::current() when entering VM " \1235"from JNI") \1236\1237develop(bool, VerifyFPU, false, \1238"Verify FPU state (check for NaN's, etc.)") \1239\1240develop(bool, VerifyThread, false, \1241"Watch the thread register for corruption (SPARC only)") \1242\1243develop(bool, VerifyActivationFrameSize, false, \1244"Verify that activation frame didn't become smaller than its " \1245"minimal size") \1246\1247develop(bool, TraceFrequencyInlining, false, \1248"Trace frequency based inlining") \1249\1250develop_pd(bool, InlineIntrinsics, \1251"Inline intrinsics that can be statically resolved") \1252\1253product_pd(bool, ProfileInterpreter, \1254"Profile at the bytecode level during interpretation") \1255\1256develop_pd(bool, ProfileTraps, \1257"Profile deoptimization traps at the bytecode level") \1258\1259product(intx, ProfileMaturityPercentage, 20, \1260"number of method invocations/branches (expressed as % of " \1261"CompileThreshold) before using the method's profile") \1262range(0, 100) \1263\1264product(bool, PrintMethodData, false, DIAGNOSTIC, \1265"Print the results of +ProfileInterpreter at end of run") \1266\1267develop(bool, VerifyDataPointer, trueInDebug, \1268"Verify the method data pointer during interpreter profiling") \1269\1270notproduct(bool, CrashGCForDumpingJavaThread, false, \1271"Manually make GC thread crash then dump java stack trace; " \1272"Test only") \1273\1274/* compilation */ \1275product(bool, UseCompiler, true, \1276"Use Just-In-Time compilation") \1277\1278product(bool, UseCounterDecay, true, \1279"Adjust recompilation counters") \1280\1281develop(intx, CounterHalfLifeTime, 30, \1282"Half-life time of invocation counters (in seconds)") \1283\1284develop(intx, CounterDecayMinIntervalLength, 500, \1285"The minimum interval (in milliseconds) between invocation of " \1286"CounterDecay") \1287\1288product(bool, AlwaysCompileLoopMethods, false, \1289"When using recompilation, never interpret methods " \1290"containing loops") \1291\1292product(intx, AllocatePrefetchStyle, 1, \1293"0 = no prefetch, " \1294"1 = generate prefetch instructions for each allocation, " \1295"2 = use TLAB watermark to gate allocation prefetch, " \1296"3 = generate one prefetch instruction per cache line") \1297range(0, 3) \1298\1299product(intx, AllocatePrefetchDistance, -1, \1300"Distance to prefetch ahead of allocation pointer. " \1301"-1: use system-specific value (automatically determined") \1302constraint(AllocatePrefetchDistanceConstraintFunc,AfterMemoryInit)\1303\1304product(intx, AllocatePrefetchLines, 3, \1305"Number of lines to prefetch ahead of array allocation pointer") \1306range(1, 64) \1307\1308product(intx, AllocateInstancePrefetchLines, 1, \1309"Number of lines to prefetch ahead of instance allocation " \1310"pointer") \1311range(1, 64) \1312\1313product(intx, AllocatePrefetchStepSize, 16, \1314"Step size in bytes of sequential prefetch instructions") \1315range(1, 512) \1316constraint(AllocatePrefetchStepSizeConstraintFunc,AfterMemoryInit)\1317\1318product(intx, AllocatePrefetchInstr, 0, \1319"Select instruction to prefetch ahead of allocation pointer") \1320constraint(AllocatePrefetchInstrConstraintFunc, AfterMemoryInit) \1321\1322/* deoptimization */ \1323develop(bool, TraceDeoptimization, false, \1324"Trace deoptimization") \1325\1326develop(bool, PrintDeoptimizationDetails, false, \1327"Print more information about deoptimization") \1328\1329develop(bool, DebugDeoptimization, false, \1330"Tracing various information while debugging deoptimization") \1331\1332product(intx, SelfDestructTimer, 0, \1333"Will cause VM to terminate after a given time (in minutes) " \1334"(0 means off)") \1335range(0, max_intx) \1336\1337product(intx, MaxJavaStackTraceDepth, 1024, \1338"The maximum number of lines in the stack trace for Java " \1339"exceptions (0 means all)") \1340range(0, max_jint/2) \1341\1342/* notice: the max range value here is max_jint, not max_intx */ \1343/* because of overflow issue */ \1344product(intx, GuaranteedSafepointInterval, 1000, DIAGNOSTIC, \1345"Guarantee a safepoint (at least) every so many milliseconds " \1346"(0 means none)") \1347range(0, max_jint) \1348\1349product(intx, SafepointTimeoutDelay, 10000, \1350"Delay in milliseconds for option SafepointTimeout") \1351range(0, max_intx LP64_ONLY(/MICROUNITS)) \1352\1353product(intx, NmethodSweepActivity, 10, \1354"Removes cold nmethods from code cache if > 0. Higher values " \1355"result in more aggressive sweeping") \1356range(0, 2000) \1357\1358notproduct(bool, LogSweeper, false, \1359"Keep a ring buffer of sweeper activity") \1360\1361notproduct(intx, SweeperLogEntries, 1024, \1362"Number of records in the ring buffer of sweeper activity") \1363\1364develop(intx, MallocCatchPtr, -1, \1365"Hit breakpoint when mallocing/freeing this pointer") \1366\1367notproduct(ccstrlist, SuppressErrorAt, "", \1368"List of assertions (file:line) to muzzle") \1369\1370develop(intx, StackPrintLimit, 100, \1371"number of stack frames to print in VM-level stack dump") \1372\1373notproduct(intx, MaxElementPrintSize, 256, \1374"maximum number of elements to print") \1375\1376notproduct(intx, MaxSubklassPrintSize, 4, \1377"maximum number of subklasses to print when printing klass") \1378\1379develop(intx, MaxForceInlineLevel, 100, \1380"maximum number of nested calls that are forced for inlining " \1381"(using CompileCommand or marked w/ @ForceInline)") \1382range(0, max_jint) \1383\1384product(intx, MinInliningThreshold, 250, \1385"The minimum invocation count a method needs to have to be " \1386"inlined") \1387range(0, max_jint) \1388\1389develop(intx, MethodHistogramCutoff, 100, \1390"The cutoff value for method invocation histogram (+CountCalls)") \1391\1392develop(intx, DontYieldALotInterval, 10, \1393"Interval between which yields will be dropped (milliseconds)") \1394\1395notproduct(intx, DeoptimizeALotInterval, 5, \1396"Number of exits until DeoptimizeALot kicks in") \1397\1398notproduct(intx, ZombieALotInterval, 5, \1399"Number of exits until ZombieALot kicks in") \1400\1401product(uintx, MallocMaxTestWords, 0, DIAGNOSTIC, \1402"If non-zero, maximum number of words that malloc/realloc can " \1403"allocate (for testing only)") \1404range(0, max_uintx) \1405\1406product(intx, TypeProfileWidth, 2, \1407"Number of receiver types to record in call/cast profile") \1408range(0, 8) \1409\1410develop(intx, BciProfileWidth, 2, \1411"Number of return bci's to record in ret profile") \1412\1413product(intx, PerMethodRecompilationCutoff, 400, \1414"After recompiling N times, stay in the interpreter (-1=>'Inf')") \1415range(-1, max_intx) \1416\1417product(intx, PerBytecodeRecompilationCutoff, 200, \1418"Per-BCI limit on repeated recompilation (-1=>'Inf')") \1419range(-1, max_intx) \1420\1421product(intx, PerMethodTrapLimit, 100, \1422"Limit on traps (of one kind) in a method (includes inlines)") \1423range(0, max_jint) \1424\1425product(intx, PerMethodSpecTrapLimit, 5000, EXPERIMENTAL, \1426"Limit on speculative traps (of one kind) in a method " \1427"(includes inlines)") \1428range(0, max_jint) \1429\1430product(intx, PerBytecodeTrapLimit, 4, \1431"Limit on traps (of one kind) at a particular BCI") \1432range(0, max_jint) \1433\1434product(intx, SpecTrapLimitExtraEntries, 3, EXPERIMENTAL, \1435"Extra method data trap entries for speculation") \1436\1437develop(intx, InlineFrequencyRatio, 20, \1438"Ratio of call site execution to caller method invocation") \1439range(0, max_jint) \1440\1441product_pd(intx, InlineFrequencyCount, DIAGNOSTIC, \1442"Count of call site execution necessary to trigger frequent " \1443"inlining") \1444range(0, max_jint) \1445\1446develop(intx, InlineThrowCount, 50, \1447"Force inlining of interpreted methods that throw this often") \1448range(0, max_jint) \1449\1450develop(intx, InlineThrowMaxSize, 200, \1451"Force inlining of throwing methods smaller than this") \1452range(0, max_jint) \1453\1454product(size_t, MetaspaceSize, NOT_LP64(16 * M) LP64_ONLY(21 * M), \1455"Initial threshold (in bytes) at which a garbage collection " \1456"is done to reduce Metaspace usage") \1457constraint(MetaspaceSizeConstraintFunc,AfterErgo) \1458\1459product(size_t, MaxMetaspaceSize, max_uintx, \1460"Maximum size of Metaspaces (in bytes)") \1461constraint(MaxMetaspaceSizeConstraintFunc,AfterErgo) \1462\1463product(size_t, CompressedClassSpaceSize, 1*G, \1464"Maximum size of class area in Metaspace when compressed " \1465"class pointers are used") \1466range(1*M, 3*G) \1467\1468product(ccstr, MetaspaceReclaimPolicy, "balanced", \1469"options: balanced, aggressive, none") \1470\1471product(bool, PrintMetaspaceStatisticsAtExit, false, DIAGNOSTIC, \1472"Print metaspace statistics upon VM exit.") \1473\1474product(bool, MetaspaceGuardAllocations, false, DIAGNOSTIC, \1475"Metapace allocations are guarded.") \1476\1477product(bool, MetaspaceHandleDeallocations, true, DIAGNOSTIC, \1478"Switch off Metapace deallocation handling.") \1479\1480product(uintx, MinHeapFreeRatio, 40, MANAGEABLE, \1481"The minimum percentage of heap free after GC to avoid expansion."\1482" For most GCs this applies to the old generation. In G1 and" \1483" ParallelGC it applies to the whole heap.") \1484range(0, 100) \1485constraint(MinHeapFreeRatioConstraintFunc,AfterErgo) \1486\1487product(uintx, MaxHeapFreeRatio, 70, MANAGEABLE, \1488"The maximum percentage of heap free after GC to avoid shrinking."\1489" For most GCs this applies to the old generation. In G1 and" \1490" ParallelGC it applies to the whole heap.") \1491range(0, 100) \1492constraint(MaxHeapFreeRatioConstraintFunc,AfterErgo) \1493\1494product(bool, ShrinkHeapInSteps, true, \1495"When disabled, informs the GC to shrink the java heap directly" \1496" to the target size at the next full GC rather than requiring" \1497" smaller steps during multiple full GCs.") \1498\1499product(intx, SoftRefLRUPolicyMSPerMB, 1000, \1500"Number of milliseconds per MB of free space in the heap") \1501range(0, max_intx) \1502constraint(SoftRefLRUPolicyMSPerMBConstraintFunc,AfterMemoryInit) \1503\1504product(size_t, MinHeapDeltaBytes, ScaleForWordSize(128*K), \1505"The minimum change in heap space due to GC (in bytes)") \1506range(0, max_uintx) \1507\1508product(size_t, MinMetaspaceExpansion, ScaleForWordSize(256*K), \1509"The minimum expansion of Metaspace (in bytes)") \1510range(0, max_uintx) \1511\1512product(uintx, MaxMetaspaceFreeRatio, 70, \1513"The maximum percentage of Metaspace free after GC to avoid " \1514"shrinking") \1515range(0, 100) \1516constraint(MaxMetaspaceFreeRatioConstraintFunc,AfterErgo) \1517\1518product(uintx, MinMetaspaceFreeRatio, 40, \1519"The minimum percentage of Metaspace free after GC to avoid " \1520"expansion") \1521range(0, 99) \1522constraint(MinMetaspaceFreeRatioConstraintFunc,AfterErgo) \1523\1524product(size_t, MaxMetaspaceExpansion, ScaleForWordSize(4*M), \1525"The maximum expansion of Metaspace without full GC (in bytes)") \1526range(0, max_uintx) \1527\1528/* stack parameters */ \1529product_pd(intx, StackYellowPages, \1530"Number of yellow zone (recoverable overflows) pages of size " \1531"4KB. If pages are bigger yellow zone is aligned up.") \1532range(MIN_STACK_YELLOW_PAGES, (DEFAULT_STACK_YELLOW_PAGES+5)) \1533\1534product_pd(intx, StackRedPages, \1535"Number of red zone (unrecoverable overflows) pages of size " \1536"4KB. If pages are bigger red zone is aligned up.") \1537range(MIN_STACK_RED_PAGES, (DEFAULT_STACK_RED_PAGES+2)) \1538\1539product_pd(intx, StackReservedPages, \1540"Number of reserved zone (reserved to annotated methods) pages" \1541" of size 4KB. If pages are bigger reserved zone is aligned up.") \1542range(MIN_STACK_RESERVED_PAGES, (DEFAULT_STACK_RESERVED_PAGES+10))\1543\1544product(bool, RestrictReservedStack, true, \1545"Restrict @ReservedStackAccess to trusted classes") \1546\1547/* greater stack shadow pages can't generate instruction to bang stack */ \1548product_pd(intx, StackShadowPages, \1549"Number of shadow zone (for overflow checking) pages of size " \1550"4KB. If pages are bigger shadow zone is aligned up. " \1551"This should exceed the depth of the VM and native call stack.") \1552range(MIN_STACK_SHADOW_PAGES, (DEFAULT_STACK_SHADOW_PAGES+30)) \1553\1554product_pd(intx, ThreadStackSize, \1555"Thread Stack Size (in Kbytes)") \1556range(0, 1 * M) \1557\1558product_pd(intx, VMThreadStackSize, \1559"Non-Java Thread Stack Size (in Kbytes)") \1560range(0, max_intx/(1 * K)) \1561\1562product_pd(intx, CompilerThreadStackSize, \1563"Compiler Thread Stack Size (in Kbytes)") \1564range(0, max_intx/(1 * K)) \1565\1566develop_pd(size_t, JVMInvokeMethodSlack, \1567"Stack space (bytes) required for JVM_InvokeMethod to complete") \1568\1569/* code cache parameters */ \1570develop_pd(uintx, CodeCacheSegmentSize, \1571"Code cache segment size (in bytes) - smallest unit of " \1572"allocation") \1573range(1, 1024) \1574constraint(CodeCacheSegmentSizeConstraintFunc, AfterErgo) \1575\1576develop_pd(intx, CodeEntryAlignment, \1577"Code entry alignment for generated code (in bytes)") \1578constraint(CodeEntryAlignmentConstraintFunc, AfterErgo) \1579\1580product_pd(intx, OptoLoopAlignment, \1581"Align inner loops to zero relative to this modulus") \1582range(1, 16) \1583constraint(OptoLoopAlignmentConstraintFunc, AfterErgo) \1584\1585product_pd(uintx, InitialCodeCacheSize, \1586"Initial code cache size (in bytes)") \1587constraint(VMPageSizeConstraintFunc, AtParse) \1588\1589develop_pd(uintx, CodeCacheMinimumUseSpace, \1590"Minimum code cache size (in bytes) required to start VM.") \1591range(0, max_uintx) \1592\1593product(bool, SegmentedCodeCache, false, \1594"Use a segmented code cache") \1595\1596product_pd(uintx, ReservedCodeCacheSize, \1597"Reserved code cache size (in bytes) - maximum code cache size") \1598constraint(VMPageSizeConstraintFunc, AtParse) \1599\1600product_pd(uintx, NonProfiledCodeHeapSize, \1601"Size of code heap with non-profiled methods (in bytes)") \1602range(0, max_uintx) \1603\1604product_pd(uintx, ProfiledCodeHeapSize, \1605"Size of code heap with profiled methods (in bytes)") \1606range(0, max_uintx) \1607\1608product_pd(uintx, NonNMethodCodeHeapSize, \1609"Size of code heap with non-nmethods (in bytes)") \1610constraint(VMPageSizeConstraintFunc, AtParse) \1611\1612product_pd(uintx, CodeCacheExpansionSize, \1613"Code cache expansion size (in bytes)") \1614range(32*K, max_uintx) \1615\1616product_pd(uintx, CodeCacheMinBlockLength, DIAGNOSTIC, \1617"Minimum number of segments in a code cache block") \1618range(1, 100) \1619\1620notproduct(bool, ExitOnFullCodeCache, false, \1621"Exit the VM if we fill the code cache") \1622\1623product(bool, UseCodeCacheFlushing, true, \1624"Remove cold/old nmethods from the code cache") \1625\1626product(double, SweeperThreshold, 0.5, \1627"Threshold controlling when code cache sweeper is invoked." \1628"Value is percentage of ReservedCodeCacheSize.") \1629range(0.0, 100.0) \1630\1631product(uintx, StartAggressiveSweepingAt, 10, \1632"Start aggressive sweeping if X[%] of the code cache is free." \1633"Segmented code cache: X[%] of the non-profiled heap." \1634"Non-segmented code cache: X[%] of the total code cache") \1635range(0, 100) \1636\1637/* interpreter debugging */ \1638develop(intx, BinarySwitchThreshold, 5, \1639"Minimal number of lookupswitch entries for rewriting to binary " \1640"switch") \1641\1642develop(intx, StopInterpreterAt, 0, \1643"Stop interpreter execution at specified bytecode number") \1644\1645develop(intx, TraceBytecodesAt, 0, \1646"Trace bytecodes starting with specified bytecode number") \1647\1648/* Priorities */ \1649product_pd(bool, UseThreadPriorities, "Use native thread priorities") \1650\1651product(intx, ThreadPriorityPolicy, 0, \1652"0 : Normal. "\1653" VM chooses priorities that are appropriate for normal "\1654" applications. "\1655" On Windows applications are allowed to use higher native "\1656" priorities. However, with ThreadPriorityPolicy=0, VM will "\1657" not use the highest possible native priority, "\1658" THREAD_PRIORITY_TIME_CRITICAL, as it may interfere with "\1659" system threads. On Linux thread priorities are ignored "\1660" because the OS does not support static priority in "\1661" SCHED_OTHER scheduling class which is the only choice for "\1662" non-root, non-realtime applications. "\1663"1 : Aggressive. "\1664" Java thread priorities map over to the entire range of "\1665" native thread priorities. Higher Java thread priorities map "\1666" to higher native thread priorities. This policy should be "\1667" used with care, as sometimes it can cause performance "\1668" degradation in the application and/or the entire system. On "\1669" Linux/BSD/macOS this policy requires root privilege or an "\1670" extended capability.") \1671range(0, 1) \1672\1673product(bool, ThreadPriorityVerbose, false, \1674"Print priority changes") \1675\1676product(intx, CompilerThreadPriority, -1, \1677"The native priority at which compiler threads should run " \1678"(-1 means no change)") \1679range(min_jint, max_jint) \1680\1681product(intx, VMThreadPriority, -1, \1682"The native priority at which the VM thread should run " \1683"(-1 means no change)") \1684range(-1, 127) \1685\1686product(intx, JavaPriority1_To_OSPriority, -1, \1687"Map Java priorities to OS priorities") \1688range(-1, 127) \1689\1690product(intx, JavaPriority2_To_OSPriority, -1, \1691"Map Java priorities to OS priorities") \1692range(-1, 127) \1693\1694product(intx, JavaPriority3_To_OSPriority, -1, \1695"Map Java priorities to OS priorities") \1696range(-1, 127) \1697\1698product(intx, JavaPriority4_To_OSPriority, -1, \1699"Map Java priorities to OS priorities") \1700range(-1, 127) \1701\1702product(intx, JavaPriority5_To_OSPriority, -1, \1703"Map Java priorities to OS priorities") \1704range(-1, 127) \1705\1706product(intx, JavaPriority6_To_OSPriority, -1, \1707"Map Java priorities to OS priorities") \1708range(-1, 127) \1709\1710product(intx, JavaPriority7_To_OSPriority, -1, \1711"Map Java priorities to OS priorities") \1712range(-1, 127) \1713\1714product(intx, JavaPriority8_To_OSPriority, -1, \1715"Map Java priorities to OS priorities") \1716range(-1, 127) \1717\1718product(intx, JavaPriority9_To_OSPriority, -1, \1719"Map Java priorities to OS priorities") \1720range(-1, 127) \1721\1722product(intx, JavaPriority10_To_OSPriority,-1, \1723"Map Java priorities to OS priorities") \1724range(-1, 127) \1725\1726product(bool, UseCriticalJavaThreadPriority, false, EXPERIMENTAL, \1727"Java thread priority 10 maps to critical scheduling priority") \1728\1729product(bool, UseCriticalCompilerThreadPriority, false, EXPERIMENTAL, \1730"Compiler thread(s) run at critical scheduling priority") \1731\1732develop(intx, NewCodeParameter, 0, \1733"Testing Only: Create a dedicated integer parameter before " \1734"putback") \1735\1736/* new oopmap storage allocation */ \1737develop(intx, MinOopMapAllocation, 8, \1738"Minimum number of OopMap entries in an OopMapSet") \1739\1740/* recompilation */ \1741product_pd(intx, CompileThreshold, \1742"number of interpreted method invocations before (re-)compiling") \1743constraint(CompileThresholdConstraintFunc, AfterErgo) \1744\1745product_pd(bool, TieredCompilation, \1746"Enable tiered compilation") \1747\1748/* Properties for Java libraries */ \1749\1750product(uint64_t, MaxDirectMemorySize, 0, \1751"Maximum total size of NIO direct-buffer allocations") \1752range(0, max_jlong) \1753\1754/* Flags used for temporary code during development */ \1755\1756product(bool, UseNewCode, false, DIAGNOSTIC, \1757"Testing Only: Use the new version while testing") \1758\1759product(bool, UseNewCode2, false, DIAGNOSTIC, \1760"Testing Only: Use the new version while testing") \1761\1762product(bool, UseNewCode3, false, DIAGNOSTIC, \1763"Testing Only: Use the new version while testing") \1764\1765notproduct(bool, UseDebuggerErgo, false, \1766"Debugging Only: Adjust the VM to be more debugger-friendly. " \1767"Turns on the other UseDebuggerErgo* flags") \1768\1769notproduct(bool, UseDebuggerErgo1, false, \1770"Debugging Only: Enable workarounds for debugger induced " \1771"os::processor_id() >= os::processor_count() problems") \1772\1773notproduct(bool, UseDebuggerErgo2, false, \1774"Debugging Only: Limit the number of spawned JVM threads") \1775\1776notproduct(bool, EnableJVMTIStackDepthAsserts, true, \1777"Enable JVMTI asserts related to stack depth checks") \1778\1779/* flags for performance data collection */ \1780\1781product(bool, UsePerfData, true, \1782"Flag to disable jvmstat instrumentation for performance testing "\1783"and problem isolation purposes") \1784\1785product(bool, PerfDataSaveToFile, false, \1786"Save PerfData memory to hsperfdata_<pid> file on exit") \1787\1788product(ccstr, PerfDataSaveFile, NULL, \1789"Save PerfData memory to the specified absolute pathname. " \1790"The string %p in the file name (if present) " \1791"will be replaced by pid") \1792\1793product(intx, PerfDataSamplingInterval, 50, \1794"Data sampling interval (in milliseconds)") \1795range(PeriodicTask::min_interval, max_jint) \1796constraint(PerfDataSamplingIntervalFunc, AfterErgo) \1797\1798product(bool, PerfDisableSharedMem, false, \1799"Store performance data in standard memory") \1800\1801product(intx, PerfDataMemorySize, 32*K, \1802"Size of performance data memory region. Will be rounded " \1803"up to a multiple of the native os page size.") \1804range(128, 32*64*K) \1805\1806product(intx, PerfMaxStringConstLength, 1024, \1807"Maximum PerfStringConstant string length before truncation") \1808range(32, 32*K) \1809\1810product(bool, PerfAllowAtExitRegistration, false, \1811"Allow registration of atexit() methods") \1812\1813product(bool, PerfBypassFileSystemCheck, false, \1814"Bypass Win32 file system criteria checks (Windows Only)") \1815\1816product(intx, UnguardOnExecutionViolation, 0, \1817"Unguard page and retry on no-execute fault (Win32 only) " \1818"0=off, 1=conservative, 2=aggressive") \1819range(0, 2) \1820\1821/* Serviceability Support */ \1822\1823product(bool, ManagementServer, false, \1824"Create JMX Management Server") \1825\1826product(bool, DisableAttachMechanism, false, \1827"Disable mechanism that allows tools to attach to this VM") \1828\1829product(bool, StartAttachListener, false, \1830"Always start Attach Listener at VM startup") \1831\1832product(bool, EnableDynamicAgentLoading, true, \1833"Allow tools to load agents with the attach mechanism") \1834\1835product(bool, PrintConcurrentLocks, false, MANAGEABLE, \1836"Print java.util.concurrent locks in thread dump") \1837\1838/* Shared spaces */ \1839\1840product(bool, UseSharedSpaces, true, \1841"Use shared spaces for metadata") \1842\1843product(bool, VerifySharedSpaces, false, \1844"Verify integrity of shared spaces") \1845\1846product(bool, RequireSharedSpaces, false, \1847"Require shared spaces for metadata") \1848\1849product(bool, DumpSharedSpaces, false, \1850"Special mode: JVM reads a class list, loads classes, builds " \1851"shared spaces, and dumps the shared spaces to a file to be " \1852"used in future JVM runs") \1853\1854product(bool, DynamicDumpSharedSpaces, false, \1855"Dynamic archive") \1856\1857product(bool, RecordDynamicDumpInfo, false, \1858"Record class info for jcmd VM.cds dynamic_dump") \1859\1860product(bool, PrintSharedArchiveAndExit, false, \1861"Print shared archive file contents") \1862\1863product(bool, PrintSharedDictionary, false, \1864"If PrintSharedArchiveAndExit is true, also print the shared " \1865"dictionary") \1866\1867product(size_t, SharedBaseAddress, LP64_ONLY(32*G) \1868NOT_LP64(LINUX_ONLY(2*G) NOT_LINUX(0)), \1869"Address to allocate shared memory region for class data") \1870range(0, SIZE_MAX) \1871\1872product(ccstr, SharedArchiveConfigFile, NULL, \1873"Data to add to the CDS archive file") \1874\1875product(uintx, SharedSymbolTableBucketSize, 4, \1876"Average number of symbols per bucket in shared table") \1877range(2, 246) \1878\1879product(bool, AllowArchivingWithJavaAgent, false, DIAGNOSTIC, \1880"Allow Java agent to be run with CDS dumping") \1881\1882product(bool, PrintMethodHandleStubs, false, DIAGNOSTIC, \1883"Print generated stub code for method handles") \1884\1885product(bool, VerifyMethodHandles, trueInDebug, DIAGNOSTIC, \1886"perform extra checks when constructing method handles") \1887\1888product(bool, ShowHiddenFrames, false, DIAGNOSTIC, \1889"show method handle implementation frames (usually hidden)") \1890\1891product(bool, TrustFinalNonStaticFields, false, EXPERIMENTAL, \1892"trust final non-static declarations for constant folding") \1893\1894product(bool, FoldStableValues, true, DIAGNOSTIC, \1895"Optimize loads from stable fields (marked w/ @Stable)") \1896\1897product(int, UseBootstrapCallInfo, 1, DIAGNOSTIC, \1898"0: when resolving InDy or ConDy, force all BSM arguments to be " \1899"resolved before the bootstrap method is called; 1: when a BSM " \1900"that may accept a BootstrapCallInfo is detected, use that API " \1901"to pass BSM arguments, which allows the BSM to delay their " \1902"resolution; 2+: stress test the BCI API by calling more BSMs " \1903"via that API, instead of with the eagerly-resolved array.") \1904\1905product(bool, PauseAtStartup, false, DIAGNOSTIC, \1906"Causes the VM to pause at startup time and wait for the pause " \1907"file to be removed (default: ./vm.paused.<pid>)") \1908\1909product(ccstr, PauseAtStartupFile, NULL, DIAGNOSTIC, \1910"The file to create and for whose removal to await when pausing " \1911"at startup. (default: ./vm.paused.<pid>)") \1912\1913product(bool, PauseAtExit, false, DIAGNOSTIC, \1914"Pause and wait for keypress on exit if a debugger is attached") \1915\1916product(bool, ExtendedDTraceProbes, false, \1917"Enable performance-impacting dtrace probes") \1918\1919product(bool, DTraceMethodProbes, false, \1920"Enable dtrace probes for method-entry and method-exit") \1921\1922product(bool, DTraceAllocProbes, false, \1923"Enable dtrace probes for object allocation") \1924\1925product(bool, DTraceMonitorProbes, false, \1926"Enable dtrace probes for monitor events") \1927\1928product(bool, RelaxAccessControlCheck, false, \1929"Relax the access control checks in the verifier") \1930\1931product(uintx, StringTableSize, defaultStringTableSize, \1932"Number of buckets in the interned String table " \1933"(will be rounded to nearest higher power of 2)") \1934range(minimumStringTableSize, 16777216ul /* 2^24 */) \1935\1936product(uintx, SymbolTableSize, defaultSymbolTableSize, EXPERIMENTAL, \1937"Number of buckets in the JVM internal Symbol table") \1938range(minimumSymbolTableSize, 16777216ul /* 2^24 */) \1939\1940product(bool, UseStringDeduplication, false, \1941"Use string deduplication") \1942\1943product(uint, StringDeduplicationAgeThreshold, 3, \1944"A string must reach this age (or be promoted to an old region) " \1945"to be considered for deduplication") \1946range(1, markWord::max_age) \1947\1948product(size_t, StringDeduplicationInitialTableSize, 500, EXPERIMENTAL, \1949"Approximate initial number of buckets in the table") \1950range(1, 1 * G) \1951\1952product(double, StringDeduplicationGrowTableLoad, 14.0, EXPERIMENTAL, \1953"Entries per bucket above which the table should be expanded") \1954range(0.1, 1000.0) \1955\1956product(double, StringDeduplicationShrinkTableLoad, 1.0, EXPERIMENTAL, \1957"Entries per bucket below which the table should be shrunk") \1958range(0.01, 100.0) \1959\1960product(double, StringDeduplicationTargetTableLoad, 7.0, EXPERIMENTAL, \1961"Desired entries per bucket when resizing the table") \1962range(0.01, 1000.0) \1963\1964product(size_t, StringDeduplicationCleanupDeadMinimum, 100, EXPERIMENTAL, \1965"Minimum number of dead table entries for cleaning the table") \1966\1967product(int, StringDeduplicationCleanupDeadPercent, 5, EXPERIMENTAL, \1968"Minimum percentage of dead table entries for cleaning the table") \1969range(1, 100) \1970\1971product(bool, StringDeduplicationResizeALot, false, DIAGNOSTIC, \1972"Force more frequent table resizing") \1973\1974product(uint64_t, StringDeduplicationHashSeed, 0, DIAGNOSTIC, \1975"Seed for the table hashing function; 0 requests computed seed") \1976\1977product(bool, WhiteBoxAPI, false, DIAGNOSTIC, \1978"Enable internal testing APIs") \1979\1980product(ccstr, DumpLoadedClassList, NULL, \1981"Dump the names all loaded classes, that could be stored into " \1982"the CDS archive, in the specified file") \1983\1984product(ccstr, SharedClassListFile, NULL, \1985"Override the default CDS class list") \1986\1987product(ccstr, SharedArchiveFile, NULL, \1988"Override the default location of the CDS archive file") \1989\1990product(ccstr, ArchiveClassesAtExit, NULL, \1991"The path and name of the dynamic archive file") \1992\1993product(ccstr, ExtraSharedClassListFile, NULL, \1994"Extra classlist for building the CDS archive file") \1995\1996product(intx, ArchiveRelocationMode, 0, DIAGNOSTIC, \1997"(0) first map at preferred address, and if " \1998"unsuccessful, map at alternative address (default); " \1999"(1) always map at alternative address; " \2000"(2) always map at preferred address, and if unsuccessful, " \2001"do not map the archive") \2002range(0, 2) \2003\2004product(size_t, ArrayAllocatorMallocLimit, (size_t)-1, EXPERIMENTAL, \2005"Allocation less than this value will be allocated " \2006"using malloc. Larger allocations will use mmap.") \2007\2008product(bool, AlwaysAtomicAccesses, false, EXPERIMENTAL, \2009"Accesses to all variables should always be atomic") \2010\2011product(bool, UseUnalignedAccesses, false, DIAGNOSTIC, \2012"Use unaligned memory accesses in Unsafe") \2013\2014product_pd(bool, PreserveFramePointer, \2015"Use the FP register for holding the frame pointer " \2016"and not as a general purpose register.") \2017\2018product(size_t, AsyncLogBufferSize, 2*M, \2019"Memory budget (in bytes) for the buffer of Asynchronous " \2020"Logging (-Xlog:async).") \2021range(100*K, 50*M) \2022\2023product(bool, CheckIntrinsics, true, DIAGNOSTIC, \2024"When a class C is loaded, check that " \2025"(1) all intrinsics defined by the VM for class C are present "\2026"in the loaded class file and are marked with the " \2027"@IntrinsicCandidate annotation, that " \2028"(2) there is an intrinsic registered for all loaded methods " \2029"that are annotated with the @IntrinsicCandidate annotation, " \2030"and that " \2031"(3) no orphan methods exist for class C (i.e., methods for " \2032"which the VM declares an intrinsic but that are not declared "\2033"in the loaded class C. " \2034"Check (3) is available only in debug builds.") \2035\2036product_pd(intx, InitArrayShortSize, DIAGNOSTIC, \2037"Threshold small size (in bytes) for clearing arrays. " \2038"Anything this size or smaller may get converted to discrete " \2039"scalar stores.") \2040range(0, max_intx) \2041constraint(InitArrayShortSizeConstraintFunc, AfterErgo) \2042\2043product(ccstr, AllocateHeapAt, NULL, \2044"Path to the directory where a temporary file will be created " \2045"to use as the backing store for Java Heap.") \2046\2047develop(int, VerifyMetaspaceInterval, DEBUG_ONLY(500) NOT_DEBUG(0), \2048"Run periodic metaspace verifications (0 - none, " \2049"1 - always, >1 every nth interval)") \2050\2051product(bool, ShowRegistersOnAssert, true, DIAGNOSTIC, \2052"On internal errors, include registers in error report.") \2053\2054product(bool, UseSwitchProfiling, true, DIAGNOSTIC, \2055"leverage profiling for table/lookup switch") \2056\2057develop(bool, TraceMemoryWriteback, false, \2058"Trace memory writeback operations") \2059\2060JFR_ONLY(product(bool, FlightRecorder, false, \2061"(Deprecated) Enable Flight Recorder")) \2062\2063JFR_ONLY(product(ccstr, FlightRecorderOptions, NULL, \2064"Flight Recorder options")) \2065\2066JFR_ONLY(product(ccstr, StartFlightRecording, NULL, \2067"Start flight recording with options")) \2068\2069product(bool, UseFastUnorderedTimeStamps, false, EXPERIMENTAL, \2070"Use platform unstable time where supported for timestamps only") \2071\2072product(bool, UseEmptySlotsInSupers, true, \2073"Allow allocating fields in empty slots of super-classes") \2074\2075product(bool, DeoptimizeNMethodBarriersALot, false, DIAGNOSTIC, \2076"Make nmethod barriers deoptimise a lot.") \2077\2078develop(bool, VerifyCrossModifyFence, \2079false AARCH64_ONLY(DEBUG_ONLY(||true)), \2080"Mark all threads after a safepoint, and clear on a modify " \2081"fence. Add cleanliness checks.") \2082\2083develop(bool, TraceOptimizedUpcallStubs, false, \2084"Trace optimized upcall stub generation") \20852086// end of RUNTIME_FLAGS20872088DECLARE_FLAGS(LP64_RUNTIME_FLAGS)2089DECLARE_ARCH_FLAGS(ARCH_FLAGS)2090DECLARE_FLAGS(RUNTIME_FLAGS)2091DECLARE_FLAGS(RUNTIME_OS_FLAGS)20922093#endif // SHARE_RUNTIME_GLOBALS_HPP209420952096