392 "Delay in milliseconds for option AbortVMOnVMOperationTimeout") \
393 range(0, max_intx) \
394 \
395 /* 50 retries * (5 * current_retry_count) millis = ~6.375 seconds */ \
396 /* typically, at most a few retries are needed */ \
397 product(intx, SuspendRetryCount, 50, \
398 "Maximum retry count for an external suspend request") \
399 range(0, max_intx) \
400 \
401 product(intx, SuspendRetryDelay, 5, \
402 "Milliseconds to delay per retry (* current_retry_count)") \
403 range(0, max_intx) \
404 \
405 product(bool, AssertOnSuspendWaitFailure, false, \
406 "Assert/Guarantee on external suspend wait failure") \
407 \
408 product(bool, TraceSuspendWaitFailures, false, \
409 "Trace external suspend wait failures") \
410 \
411 product(bool, MaxFDLimit, true, \
412 "Bump the number of file descriptors to maximum in Solaris") \
413 \
414 diagnostic(bool, LogEvents, true, \
415 "Enable the various ring buffer event logs") \
416 \
417 diagnostic(uintx, LogEventsBufferEntries, 20, \
418 "Number of ring buffer event logs") \
419 range(1, NOT_LP64(1*K) LP64_ONLY(1*M)) \
420 \
421 diagnostic(bool, BytecodeVerificationRemote, true, \
422 "Enable the Java bytecode verifier for remote classes") \
423 \
424 diagnostic(bool, BytecodeVerificationLocal, false, \
425 "Enable the Java bytecode verifier for local classes") \
426 \
427 develop(bool, ForceFloatExceptions, trueInDebug, \
428 "Force exceptions on FP stack under/overflow") \
429 \
430 develop(bool, VerifyStackAtCalls, false, \
431 "Verify that the stack pointer is unchanged after calls") \
432 \
662 "Write memory usage profiling to log file") \
663 \
664 notproduct(bool, PrintSystemDictionaryAtExit, false, \
665 "Print the system dictionary at exit") \
666 \
667 diagnostic(bool, DynamicallyResizeSystemDictionaries, true, \
668 "Dynamically resize system dictionaries as needed") \
669 \
670 product(bool, AlwaysLockClassLoader, false, \
671 "Require the VM to acquire the class loader lock before calling " \
672 "loadClass() even for class loaders registering " \
673 "as parallel capable") \
674 \
675 product(bool, AllowParallelDefineClass, false, \
676 "Allow parallel defineClass requests for class loaders " \
677 "registering as parallel capable") \
678 \
679 product_pd(bool, DontYieldALot, \
680 "Throw away obvious excess yield calls") \
681 \
682 develop(bool, UseDetachedThreads, true, \
683 "Use detached threads that are recycled upon termination " \
684 "(for Solaris only)") \
685 \
686 experimental(bool, DisablePrimordialThreadGuardPages, false, \
687 "Disable the use of stack guard pages if the JVM is loaded " \
688 "on the primordial process thread") \
689 \
690 product(bool, UseLWPSynchronization, true, \
691 "Use LWP-based instead of libthread-based synchronization " \
692 "(SPARC only)") \
693 \
694 product(intx, MonitorBound, 0, "(Deprecated) Bound Monitor population") \
695 range(0, max_jint) \
696 \
697 experimental(intx, MonitorUsedDeflationThreshold, 90, \
698 "Percentage of used monitors before triggering cleanup " \
699 "safepoint which deflates monitors (0 is off). " \
700 "The check is performed on GuaranteedSafepointInterval.") \
701 range(0, 100) \
702 \
703 experimental(intx, hashCode, 5, \
704 "(Unstable) select hashCode generation algorithm") \
705 \
706 product(bool, FilterSpuriousWakeups, true, \
707 "When true prevents OS-level spurious, or premature, wakeups " \
708 "from Object.wait (Ignored for Windows)") \
709 \
710 develop(bool, UsePthreads, false, \
711 "Use pthread-based instead of libthread-based synchronization " \
712 "(SPARC only)") \
713 \
714 product(bool, ReduceSignalUsage, false, \
715 "Reduce the use of OS signals in Java and/or the VM") \
716 \
717 develop(bool, LoadLineNumberTables, true, \
718 "Tell whether the class file parser loads line number tables") \
719 \
720 develop(bool, LoadLocalVariableTables, true, \
721 "Tell whether the class file parser loads local variable tables") \
722 \
723 develop(bool, LoadLocalVariableTypeTables, true, \
724 "Tell whether the class file parser loads local variable type" \
725 "tables") \
726 \
727 product(bool, AllowUserSignalHandlers, false, \
728 "Do not complain if the application installs signal handlers " \
729 "(Solaris & Linux only)") \
730 \
731 product(bool, UseSignalChaining, true, \
732 "Use signal-chaining to invoke signal handlers installed " \
733 "by the application (Solaris & Linux only)") \
734 \
735 product(bool, RestoreMXCSROnJNICalls, false, \
736 "Restore MXCSR when returning from JNI calls") \
737 \
738 product(bool, CheckJNICalls, false, \
739 "Verify all arguments to JNI calls") \
740 \
741 product(bool, UseFastJNIAccessors, true, \
742 "Use optimized versions of Get<Primitive>Field") \
743 \
744 product(intx, MaxJNILocalCapacity, 65536, \
745 "Maximum allowable local JNI handle capacity to " \
746 "EnsureLocalCapacity() and PushLocalFrame(), " \
747 "where <= 0 is unlimited, default: 65536") \
748 range(min_intx, max_intx) \
749 \
750 product(bool, EagerXrunInit, false, \
751 "Eagerly initialize -Xrun libraries; allows startup profiling, " \
752 "but not all -Xrun libraries may support the state of the VM " \
753 "at this time") \
1816 "Record replay data for crashing compiler threads") \
1817 \
1818 product(bool, CICompilerCountPerCPU, false, \
1819 "1 compiler thread for log(N CPUs)") \
1820 \
1821 notproduct(intx, CICrashAt, -1, \
1822 "id of compilation to trigger assert in compiler thread for " \
1823 "the purpose of testing, e.g. generation of replay data") \
1824 notproduct(bool, CIObjectFactoryVerify, false, \
1825 "enable potentially expensive verification in ciObjectFactory") \
1826 \
1827 diagnostic(bool, AbortVMOnCompilationFailure, false, \
1828 "Abort VM when method had failed to compile.") \
1829 \
1830 /* Priorities */ \
1831 product_pd(bool, UseThreadPriorities, "Use native thread priorities") \
1832 \
1833 product(intx, ThreadPriorityPolicy, 0, \
1834 "0 : Normal. "\
1835 " VM chooses priorities that are appropriate for normal "\
1836 " applications. On Solaris NORM_PRIORITY and above are mapped "\
1837 " to normal native priority. Java priorities below " \
1838 " NORM_PRIORITY map to lower native priority values. On "\
1839 " Windows applications are allowed to use higher native "\
1840 " priorities. However, with ThreadPriorityPolicy=0, VM will "\
1841 " not use the highest possible native priority, "\
1842 " THREAD_PRIORITY_TIME_CRITICAL, as it may interfere with "\
1843 " system threads. On Linux thread priorities are ignored "\
1844 " because the OS does not support static priority in "\
1845 " SCHED_OTHER scheduling class which is the only choice for "\
1846 " non-root, non-realtime applications. "\
1847 "1 : Aggressive. "\
1848 " Java thread priorities map over to the entire range of "\
1849 " native thread priorities. Higher Java thread priorities map "\
1850 " to higher native thread priorities. This policy should be "\
1851 " used with care, as sometimes it can cause performance "\
1852 " degradation in the application and/or the entire system. On "\
1853 " Linux/BSD/macOS this policy requires root privilege or an "\
1854 " extended capability.") \
1855 range(0, 1) \
1856 \
1857 product(bool, ThreadPriorityVerbose, false, \
1858 "Print priority changes") \
1859 \
2383 "Override the default CDS class list") \
2384 \
2385 product(ccstr, SharedArchiveFile, NULL, \
2386 "Override the default location of the CDS archive file") \
2387 \
2388 product(ccstr, ArchiveClassesAtExit, NULL, \
2389 "The path and name of the dynamic archive file") \
2390 \
2391 product(ccstr, ExtraSharedClassListFile, NULL, \
2392 "Extra classlist for building the CDS archive file") \
2393 \
2394 diagnostic(intx, ArchiveRelocationMode, 0, \
2395 "(0) first map at preferred address, and if " \
2396 "unsuccessful, map at alternative address (default); " \
2397 "(1) always map at alternative address; " \
2398 "(2) always map at preferred address, and if unsuccessful, " \
2399 "do not map the archive") \
2400 range(0, 2) \
2401 \
2402 experimental(size_t, ArrayAllocatorMallocLimit, \
2403 SOLARIS_ONLY(64*K) NOT_SOLARIS((size_t)-1), \
2404 "Allocation less than this value will be allocated " \
2405 "using malloc. Larger allocations will use mmap.") \
2406 \
2407 experimental(bool, AlwaysAtomicAccesses, false, \
2408 "Accesses to all variables should always be atomic") \
2409 \
2410 diagnostic(bool, UseUnalignedAccesses, false, \
2411 "Use unaligned memory accesses in Unsafe") \
2412 \
2413 product_pd(bool, PreserveFramePointer, \
2414 "Use the FP register for holding the frame pointer " \
2415 "and not as a general purpose register.") \
2416 \
2417 diagnostic(bool, CheckIntrinsics, true, \
2418 "When a class C is loaded, check that " \
2419 "(1) all intrinsics defined by the VM for class C are present "\
2420 "in the loaded class file and are marked with the " \
2421 "@HotSpotIntrinsicCandidate annotation, that " \
2422 "(2) there is an intrinsic registered for all loaded methods " \
2423 "that are annotated with the @HotSpotIntrinsicCandidate " \
|
392 "Delay in milliseconds for option AbortVMOnVMOperationTimeout") \
393 range(0, max_intx) \
394 \
395 /* 50 retries * (5 * current_retry_count) millis = ~6.375 seconds */ \
396 /* typically, at most a few retries are needed */ \
397 product(intx, SuspendRetryCount, 50, \
398 "Maximum retry count for an external suspend request") \
399 range(0, max_intx) \
400 \
401 product(intx, SuspendRetryDelay, 5, \
402 "Milliseconds to delay per retry (* current_retry_count)") \
403 range(0, max_intx) \
404 \
405 product(bool, AssertOnSuspendWaitFailure, false, \
406 "Assert/Guarantee on external suspend wait failure") \
407 \
408 product(bool, TraceSuspendWaitFailures, false, \
409 "Trace external suspend wait failures") \
410 \
411 product(bool, MaxFDLimit, true, \
412 "Bump the number of file descriptors to maximum (Unix only)") \
413 \
414 diagnostic(bool, LogEvents, true, \
415 "Enable the various ring buffer event logs") \
416 \
417 diagnostic(uintx, LogEventsBufferEntries, 20, \
418 "Number of ring buffer event logs") \
419 range(1, NOT_LP64(1*K) LP64_ONLY(1*M)) \
420 \
421 diagnostic(bool, BytecodeVerificationRemote, true, \
422 "Enable the Java bytecode verifier for remote classes") \
423 \
424 diagnostic(bool, BytecodeVerificationLocal, false, \
425 "Enable the Java bytecode verifier for local classes") \
426 \
427 develop(bool, ForceFloatExceptions, trueInDebug, \
428 "Force exceptions on FP stack under/overflow") \
429 \
430 develop(bool, VerifyStackAtCalls, false, \
431 "Verify that the stack pointer is unchanged after calls") \
432 \
662 "Write memory usage profiling to log file") \
663 \
664 notproduct(bool, PrintSystemDictionaryAtExit, false, \
665 "Print the system dictionary at exit") \
666 \
667 diagnostic(bool, DynamicallyResizeSystemDictionaries, true, \
668 "Dynamically resize system dictionaries as needed") \
669 \
670 product(bool, AlwaysLockClassLoader, false, \
671 "Require the VM to acquire the class loader lock before calling " \
672 "loadClass() even for class loaders registering " \
673 "as parallel capable") \
674 \
675 product(bool, AllowParallelDefineClass, false, \
676 "Allow parallel defineClass requests for class loaders " \
677 "registering as parallel capable") \
678 \
679 product_pd(bool, DontYieldALot, \
680 "Throw away obvious excess yield calls") \
681 \
682 experimental(bool, DisablePrimordialThreadGuardPages, false, \
683 "Disable the use of stack guard pages if the JVM is loaded " \
684 "on the primordial process thread") \
685 \
686 product(bool, UseLWPSynchronization, true, \
687 "Use LWP-based instead of libthread-based synchronization " \
688 "(SPARC only)") \
689 \
690 product(intx, MonitorBound, 0, "(Deprecated) Bound Monitor population") \
691 range(0, max_jint) \
692 \
693 experimental(intx, MonitorUsedDeflationThreshold, 90, \
694 "Percentage of used monitors before triggering cleanup " \
695 "safepoint which deflates monitors (0 is off). " \
696 "The check is performed on GuaranteedSafepointInterval.") \
697 range(0, 100) \
698 \
699 experimental(intx, hashCode, 5, \
700 "(Unstable) select hashCode generation algorithm") \
701 \
702 product(bool, FilterSpuriousWakeups, true, \
703 "When true prevents OS-level spurious, or premature, wakeups " \
704 "from Object.wait (Ignored for Windows)") \
705 \
706 product(bool, ReduceSignalUsage, false, \
707 "Reduce the use of OS signals in Java and/or the VM") \
708 \
709 develop(bool, LoadLineNumberTables, true, \
710 "Tell whether the class file parser loads line number tables") \
711 \
712 develop(bool, LoadLocalVariableTables, true, \
713 "Tell whether the class file parser loads local variable tables") \
714 \
715 develop(bool, LoadLocalVariableTypeTables, true, \
716 "Tell whether the class file parser loads local variable type" \
717 "tables") \
718 \
719 product(bool, AllowUserSignalHandlers, false, \
720 "Do not complain if the application installs signal handlers " \
721 "(Unix only)") \
722 \
723 product(bool, UseSignalChaining, true, \
724 "Use signal-chaining to invoke signal handlers installed " \
725 "by the application (Unix only)") \
726 \
727 product(bool, RestoreMXCSROnJNICalls, false, \
728 "Restore MXCSR when returning from JNI calls") \
729 \
730 product(bool, CheckJNICalls, false, \
731 "Verify all arguments to JNI calls") \
732 \
733 product(bool, UseFastJNIAccessors, true, \
734 "Use optimized versions of Get<Primitive>Field") \
735 \
736 product(intx, MaxJNILocalCapacity, 65536, \
737 "Maximum allowable local JNI handle capacity to " \
738 "EnsureLocalCapacity() and PushLocalFrame(), " \
739 "where <= 0 is unlimited, default: 65536") \
740 range(min_intx, max_intx) \
741 \
742 product(bool, EagerXrunInit, false, \
743 "Eagerly initialize -Xrun libraries; allows startup profiling, " \
744 "but not all -Xrun libraries may support the state of the VM " \
745 "at this time") \
1808 "Record replay data for crashing compiler threads") \
1809 \
1810 product(bool, CICompilerCountPerCPU, false, \
1811 "1 compiler thread for log(N CPUs)") \
1812 \
1813 notproduct(intx, CICrashAt, -1, \
1814 "id of compilation to trigger assert in compiler thread for " \
1815 "the purpose of testing, e.g. generation of replay data") \
1816 notproduct(bool, CIObjectFactoryVerify, false, \
1817 "enable potentially expensive verification in ciObjectFactory") \
1818 \
1819 diagnostic(bool, AbortVMOnCompilationFailure, false, \
1820 "Abort VM when method had failed to compile.") \
1821 \
1822 /* Priorities */ \
1823 product_pd(bool, UseThreadPriorities, "Use native thread priorities") \
1824 \
1825 product(intx, ThreadPriorityPolicy, 0, \
1826 "0 : Normal. "\
1827 " VM chooses priorities that are appropriate for normal "\
1828 " applications. "\
1829 " On Windows applications are allowed to use higher native "\
1830 " priorities. However, with ThreadPriorityPolicy=0, VM will "\
1831 " not use the highest possible native priority, "\
1832 " THREAD_PRIORITY_TIME_CRITICAL, as it may interfere with "\
1833 " system threads. On Linux thread priorities are ignored "\
1834 " because the OS does not support static priority in "\
1835 " SCHED_OTHER scheduling class which is the only choice for "\
1836 " non-root, non-realtime applications. "\
1837 "1 : Aggressive. "\
1838 " Java thread priorities map over to the entire range of "\
1839 " native thread priorities. Higher Java thread priorities map "\
1840 " to higher native thread priorities. This policy should be "\
1841 " used with care, as sometimes it can cause performance "\
1842 " degradation in the application and/or the entire system. On "\
1843 " Linux/BSD/macOS this policy requires root privilege or an "\
1844 " extended capability.") \
1845 range(0, 1) \
1846 \
1847 product(bool, ThreadPriorityVerbose, false, \
1848 "Print priority changes") \
1849 \
2373 "Override the default CDS class list") \
2374 \
2375 product(ccstr, SharedArchiveFile, NULL, \
2376 "Override the default location of the CDS archive file") \
2377 \
2378 product(ccstr, ArchiveClassesAtExit, NULL, \
2379 "The path and name of the dynamic archive file") \
2380 \
2381 product(ccstr, ExtraSharedClassListFile, NULL, \
2382 "Extra classlist for building the CDS archive file") \
2383 \
2384 diagnostic(intx, ArchiveRelocationMode, 0, \
2385 "(0) first map at preferred address, and if " \
2386 "unsuccessful, map at alternative address (default); " \
2387 "(1) always map at alternative address; " \
2388 "(2) always map at preferred address, and if unsuccessful, " \
2389 "do not map the archive") \
2390 range(0, 2) \
2391 \
2392 experimental(size_t, ArrayAllocatorMallocLimit, \
2393 (size_t)-1, \
2394 "Allocation less than this value will be allocated " \
2395 "using malloc. Larger allocations will use mmap.") \
2396 \
2397 experimental(bool, AlwaysAtomicAccesses, false, \
2398 "Accesses to all variables should always be atomic") \
2399 \
2400 diagnostic(bool, UseUnalignedAccesses, false, \
2401 "Use unaligned memory accesses in Unsafe") \
2402 \
2403 product_pd(bool, PreserveFramePointer, \
2404 "Use the FP register for holding the frame pointer " \
2405 "and not as a general purpose register.") \
2406 \
2407 diagnostic(bool, CheckIntrinsics, true, \
2408 "When a class C is loaded, check that " \
2409 "(1) all intrinsics defined by the VM for class C are present "\
2410 "in the loaded class file and are marked with the " \
2411 "@HotSpotIntrinsicCandidate annotation, that " \
2412 "(2) there is an intrinsic registered for all loaded methods " \
2413 "that are annotated with the @HotSpotIntrinsicCandidate " \
|