changeset 44203 | d2d435372329 |
parent 43972 | 1ade39b8381b |
parent 43607 | 015723e36620 |
child 44470 | d10b1eca0b45 |
child 46367 | 6e532778cb35 |
44080:56713dcfe871 | 44203:d2d435372329 |
---|---|
373 // - All expired options should be removed from the table. |
373 // - All expired options should be removed from the table. |
374 static SpecialFlag const special_jvm_flags[] = { |
374 static SpecialFlag const special_jvm_flags[] = { |
375 // -------------- Deprecated Flags -------------- |
375 // -------------- Deprecated Flags -------------- |
376 // --- Non-alias flags - sorted by obsolete_in then expired_in: |
376 // --- Non-alias flags - sorted by obsolete_in then expired_in: |
377 { "MaxGCMinorPauseMillis", JDK_Version::jdk(8), JDK_Version::undefined(), JDK_Version::undefined() }, |
377 { "MaxGCMinorPauseMillis", JDK_Version::jdk(8), JDK_Version::undefined(), JDK_Version::undefined() }, |
378 { "AutoGCSelectPauseMillis", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(10) }, |
|
379 { "UseAutoGCSelectPolicy", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(10) }, |
|
380 { "UseParNewGC", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(10) }, |
|
381 { "ExplicitGCInvokesConcurrentAndUnloadsClasses", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(10) }, |
|
382 { "ConvertSleepToYield", JDK_Version::jdk(9), JDK_Version::jdk(10), JDK_Version::jdk(11) }, |
|
383 { "ConvertYieldToSleep", JDK_Version::jdk(9), JDK_Version::jdk(10), JDK_Version::jdk(11) }, |
|
384 |
378 |
385 // --- Deprecated alias flags (see also aliased_jvm_flags) - sorted by obsolete_in then expired_in: |
379 // --- Deprecated alias flags (see also aliased_jvm_flags) - sorted by obsolete_in then expired_in: |
386 { "DefaultMaxRAMFraction", JDK_Version::jdk(8), JDK_Version::undefined(), JDK_Version::undefined() }, |
380 { "DefaultMaxRAMFraction", JDK_Version::jdk(8), JDK_Version::undefined(), JDK_Version::undefined() }, |
387 { "CreateMinidumpOnCrash", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::undefined() }, |
381 { "CreateMinidumpOnCrash", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::undefined() }, |
388 { "CMSMarkStackSizeMax", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(10) }, |
|
389 { "CMSMarkStackSize", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(10) }, |
|
390 { "G1MarkStackSize", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(10) }, |
|
391 { "ParallelMarkingThreads", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(10) }, |
|
392 { "ParallelCMSThreads", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(10) }, |
|
393 |
382 |
394 // -------------- Obsolete Flags - sorted by expired_in -------------- |
383 // -------------- Obsolete Flags - sorted by expired_in -------------- |
395 { "UseOldInlining", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
384 { "ConvertSleepToYield", JDK_Version::jdk(9), JDK_Version::jdk(10), JDK_Version::jdk(11) }, |
396 { "SafepointPollOffset", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
385 { "ConvertYieldToSleep", JDK_Version::jdk(9), JDK_Version::jdk(10), JDK_Version::jdk(11) }, |
397 { "UseBoundThreads", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
386 { "MinSleepInterval", JDK_Version::jdk(9), JDK_Version::jdk(10), JDK_Version::jdk(11) }, |
398 { "DefaultThreadPriority", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
387 { "PermSize", JDK_Version::undefined(), JDK_Version::jdk(8), JDK_Version::undefined() }, |
399 { "NoYieldsInMicrolock", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
388 { "MaxPermSize", JDK_Version::undefined(), JDK_Version::jdk(8), JDK_Version::undefined() }, |
400 { "BackEdgeThreshold", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
401 { "UseNewReflection", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
402 { "ReflectionWrapResolutionErrors",JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
403 { "VerifyReflectionBytecodes", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
404 { "AutoShutdownNMT", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
405 { "NmethodSweepFraction", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
406 { "NmethodSweepCheckInterval", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
407 { "CodeCacheMinimumFreeSpace", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
408 #ifndef ZERO |
|
409 { "UseFastAccessorMethods", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
410 { "UseFastEmptyMethods", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
411 #endif // ZERO |
|
412 { "UseCompilerSafepoints", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
413 { "AdaptiveSizePausePolicy", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
414 { "ParallelGCRetainPLAB", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
415 { "ThreadSafetyMargin", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
416 { "LazyBootClassLoader", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
417 { "StarvationMonitorInterval", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
418 { "PreInflateSpin", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
419 { "JNIDetachReleasesMonitors", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
420 { "UseAltSigs", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
421 { "SegmentedHeapDumpThreshold", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
422 { "PrintOopAddress", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(10) }, |
|
423 { "PermSize", JDK_Version::undefined(), JDK_Version::jdk(8), JDK_Version::jdk(10) }, |
|
424 { "MaxPermSize", JDK_Version::undefined(), JDK_Version::jdk(8), JDK_Version::jdk(10) }, |
|
425 |
389 |
426 #ifdef TEST_VERIFY_SPECIAL_JVM_FLAGS |
390 #ifdef TEST_VERIFY_SPECIAL_JVM_FLAGS |
427 { "dep > obs", JDK_Version::jdk(9), JDK_Version::jdk(8), JDK_Version::undefined() }, |
391 { "dep > obs", JDK_Version::jdk(9), JDK_Version::jdk(8), JDK_Version::undefined() }, |
428 { "dep > exp ", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(8) }, |
392 { "dep > exp ", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::jdk(8) }, |
429 { "obs > exp ", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(8) }, |
393 { "obs > exp ", JDK_Version::undefined(), JDK_Version::jdk(9), JDK_Version::jdk(8) }, |
442 const char* real_name; |
406 const char* real_name; |
443 } AliasedFlag; |
407 } AliasedFlag; |
444 |
408 |
445 static AliasedFlag const aliased_jvm_flags[] = { |
409 static AliasedFlag const aliased_jvm_flags[] = { |
446 { "DefaultMaxRAMFraction", "MaxRAMFraction" }, |
410 { "DefaultMaxRAMFraction", "MaxRAMFraction" }, |
447 { "CMSMarkStackSizeMax", "MarkStackSizeMax" }, |
|
448 { "CMSMarkStackSize", "MarkStackSize" }, |
|
449 { "G1MarkStackSize", "MarkStackSize" }, |
|
450 { "ParallelMarkingThreads", "ConcGCThreads" }, |
|
451 { "ParallelCMSThreads", "ConcGCThreads" }, |
|
452 { "CreateMinidumpOnCrash", "CreateCoredumpOnCrash" }, |
411 { "CreateMinidumpOnCrash", "CreateCoredumpOnCrash" }, |
453 { NULL, NULL} |
412 { NULL, NULL} |
454 }; |
413 }; |
455 |
414 |
456 // NOTE: A compatibility request will be necessary for each alias to be removed. |
415 // NOTE: A compatibility request will be necessary for each alias to be removed. |
1545 |
1504 |
1546 void Arguments::set_parnew_gc_flags() { |
1505 void Arguments::set_parnew_gc_flags() { |
1547 assert(!UseSerialGC && !UseParallelOldGC && !UseParallelGC && !UseG1GC, |
1506 assert(!UseSerialGC && !UseParallelOldGC && !UseParallelGC && !UseG1GC, |
1548 "control point invariant"); |
1507 "control point invariant"); |
1549 assert(UseConcMarkSweepGC, "CMS is expected to be on here"); |
1508 assert(UseConcMarkSweepGC, "CMS is expected to be on here"); |
1550 assert(UseParNewGC, "ParNew should always be used with CMS"); |
|
1551 |
1509 |
1552 if (FLAG_IS_DEFAULT(ParallelGCThreads)) { |
1510 if (FLAG_IS_DEFAULT(ParallelGCThreads)) { |
1553 FLAG_SET_DEFAULT(ParallelGCThreads, Abstract_VM_Version::parallel_worker_threads()); |
1511 FLAG_SET_DEFAULT(ParallelGCThreads, Abstract_VM_Version::parallel_worker_threads()); |
1554 assert(ParallelGCThreads > 0, "We should always have at least one thread by default"); |
1512 assert(ParallelGCThreads > 0, "We should always have at least one thread by default"); |
1555 } else if (ParallelGCThreads == 0) { |
1513 } else if (ParallelGCThreads == 0) { |
1586 // further optimization and tuning efforts, and would almost |
1544 // further optimization and tuning efforts, and would almost |
1587 // certainly gain from analysis of platform and environment. |
1545 // certainly gain from analysis of platform and environment. |
1588 void Arguments::set_cms_and_parnew_gc_flags() { |
1546 void Arguments::set_cms_and_parnew_gc_flags() { |
1589 assert(!UseSerialGC && !UseParallelOldGC && !UseParallelGC, "Error"); |
1547 assert(!UseSerialGC && !UseParallelOldGC && !UseParallelGC, "Error"); |
1590 assert(UseConcMarkSweepGC, "CMS is expected to be on here"); |
1548 assert(UseConcMarkSweepGC, "CMS is expected to be on here"); |
1591 assert(UseParNewGC, "ParNew should always be used with CMS"); |
|
1592 |
1549 |
1593 // Turn off AdaptiveSizePolicy by default for cms until it is complete. |
1550 // Turn off AdaptiveSizePolicy by default for cms until it is complete. |
1594 disable_adaptive_size_policy("UseConcMarkSweepGC"); |
1551 disable_adaptive_size_policy("UseConcMarkSweepGC"); |
1595 |
1552 |
1596 set_parnew_gc_flags(); |
1553 set_parnew_gc_flags(); |
1726 |
1683 |
1727 LP64_ONLY(return OopEncodingHeapMax - displacement_due_to_null_page); |
1684 LP64_ONLY(return OopEncodingHeapMax - displacement_due_to_null_page); |
1728 NOT_LP64(ShouldNotReachHere(); return 0); |
1685 NOT_LP64(ShouldNotReachHere(); return 0); |
1729 } |
1686 } |
1730 |
1687 |
1731 bool Arguments::should_auto_select_low_pause_collector() { |
|
1732 if (UseAutoGCSelectPolicy && |
|
1733 !FLAG_IS_DEFAULT(MaxGCPauseMillis) && |
|
1734 (MaxGCPauseMillis <= AutoGCSelectPauseMillis)) { |
|
1735 log_trace(gc)("Automatic selection of the low pause collector based on pause goal of %d (ms)", (int) MaxGCPauseMillis); |
|
1736 return true; |
|
1737 } |
|
1738 return false; |
|
1739 } |
|
1740 |
|
1741 void Arguments::set_use_compressed_oops() { |
1688 void Arguments::set_use_compressed_oops() { |
1742 #ifndef ZERO |
1689 #ifndef ZERO |
1743 #ifdef _LP64 |
1690 #ifdef _LP64 |
1744 // MaxHeapSize is not set up properly at this point, but |
1691 // MaxHeapSize is not set up properly at this point, but |
1745 // the only value that can override MaxHeapSize if we are |
1692 // the only value that can override MaxHeapSize if we are |
1839 #endif //TIERED |
1786 #endif //TIERED |
1840 |
1787 |
1841 void Arguments::select_gc_ergonomically() { |
1788 void Arguments::select_gc_ergonomically() { |
1842 #if INCLUDE_ALL_GCS |
1789 #if INCLUDE_ALL_GCS |
1843 if (os::is_server_class_machine()) { |
1790 if (os::is_server_class_machine()) { |
1844 if (!UseAutoGCSelectPolicy) { |
1791 FLAG_SET_ERGO_IF_DEFAULT(bool, UseG1GC, true); |
1845 FLAG_SET_ERGO_IF_DEFAULT(bool, UseG1GC, true); |
|
1846 } else { |
|
1847 if (should_auto_select_low_pause_collector()) { |
|
1848 FLAG_SET_ERGO_IF_DEFAULT(bool, UseConcMarkSweepGC, true); |
|
1849 FLAG_SET_ERGO_IF_DEFAULT(bool, UseParNewGC, true); |
|
1850 } else { |
|
1851 FLAG_SET_ERGO_IF_DEFAULT(bool, UseParallelGC, true); |
|
1852 } |
|
1853 } |
|
1854 } else { |
1792 } else { |
1855 FLAG_SET_ERGO_IF_DEFAULT(bool, UseSerialGC, true); |
1793 FLAG_SET_ERGO_IF_DEFAULT(bool, UseSerialGC, true); |
1856 } |
1794 } |
1857 #else |
1795 #else |
1858 UNSUPPORTED_OPTION(UseG1GC); |
1796 UNSUPPORTED_OPTION(UseG1GC); |
1859 UNSUPPORTED_OPTION(UseParallelGC); |
1797 UNSUPPORTED_OPTION(UseParallelGC); |
1860 UNSUPPORTED_OPTION(UseParallelOldGC); |
1798 UNSUPPORTED_OPTION(UseParallelOldGC); |
1861 UNSUPPORTED_OPTION(UseConcMarkSweepGC); |
1799 UNSUPPORTED_OPTION(UseConcMarkSweepGC); |
1862 UNSUPPORTED_OPTION(UseParNewGC); |
|
1863 FLAG_SET_ERGO_IF_DEFAULT(bool, UseSerialGC, true); |
1800 FLAG_SET_ERGO_IF_DEFAULT(bool, UseSerialGC, true); |
1864 #endif // INCLUDE_ALL_GCS |
1801 #endif // INCLUDE_ALL_GCS |
1865 } |
1802 } |
1866 |
1803 |
1867 void Arguments::select_gc() { |
1804 void Arguments::select_gc() { |
2076 |
2013 |
2077 // If class unloading is disabled, also disable concurrent class unloading. |
2014 // If class unloading is disabled, also disable concurrent class unloading. |
2078 if (!ClassUnloading) { |
2015 if (!ClassUnloading) { |
2079 FLAG_SET_CMDLINE(bool, CMSClassUnloadingEnabled, false); |
2016 FLAG_SET_CMDLINE(bool, CMSClassUnloadingEnabled, false); |
2080 FLAG_SET_CMDLINE(bool, ClassUnloadingWithConcurrentMark, false); |
2017 FLAG_SET_CMDLINE(bool, ClassUnloadingWithConcurrentMark, false); |
2081 FLAG_SET_CMDLINE(bool, ExplicitGCInvokesConcurrentAndUnloadsClasses, false); |
|
2082 } |
2018 } |
2083 #endif // INCLUDE_ALL_GCS |
2019 #endif // INCLUDE_ALL_GCS |
2084 } |
2020 } |
2085 |
2021 |
2086 julong Arguments::limit_by_allocatable_memory(julong limit) { |
2022 julong Arguments::limit_by_allocatable_memory(julong limit) { |
2428 if (i > 1) { |
2364 if (i > 1) { |
2429 jio_fprintf(defaultStream::error_stream(), |
2365 jio_fprintf(defaultStream::error_stream(), |
2430 "Conflicting collector combinations in option list; " |
2366 "Conflicting collector combinations in option list; " |
2431 "please refer to the release notes for the combinations " |
2367 "please refer to the release notes for the combinations " |
2432 "allowed\n"); |
2368 "allowed\n"); |
2433 return false; |
|
2434 } |
|
2435 |
|
2436 if (UseConcMarkSweepGC && !UseParNewGC) { |
|
2437 jio_fprintf(defaultStream::error_stream(), |
|
2438 "It is not possible to combine the DefNew young collector with the CMS collector.\n"); |
|
2439 return false; |
|
2440 } |
|
2441 |
|
2442 if (UseParNewGC && !UseConcMarkSweepGC) { |
|
2443 jio_fprintf(defaultStream::error_stream(), |
|
2444 "It is not possible to combine the ParNew young collector with any collector other than CMS.\n"); |
|
2445 return false; |
2369 return false; |
2446 } |
2370 } |
2447 |
2371 |
2448 return true; |
2372 return true; |
2449 } |
2373 } |
3729 } |
3653 } |
3730 } |
3654 } |
3731 } |
3655 } |
3732 } |
3656 } |
3733 |
3657 |
3734 if (UseConcMarkSweepGC && FLAG_IS_DEFAULT(UseParNewGC) && !UseParNewGC) { |
|
3735 // CMS can only be used with ParNew |
|
3736 FLAG_SET_ERGO(bool, UseParNewGC, true); |
|
3737 } |
|
3738 |
|
3739 if (!check_vm_args_consistency()) { |
3658 if (!check_vm_args_consistency()) { |
3740 return JNI_ERR; |
3659 return JNI_ERR; |
3741 } |
3660 } |
3742 |
3661 |
3743 #if INCLUDE_JVMCI |
3662 #if INCLUDE_JVMCI |