492 // - As "deprecated" options age into "obsolete" or "expired" options, the associated "globals"
493 // variable should be removed, as well as users of the variable.
494 // - As "deprecated" options age into "obsolete" options, move the entry into the
495 // "Obsolete Flags" section of the table.
496 // - All expired options should be removed from the table.
497 static SpecialFlag const special_jvm_flags[] = {
498 // -------------- Deprecated Flags --------------
499 // --- Non-alias flags - sorted by obsolete_in then expired_in:
500 { "MaxGCMinorPauseMillis", JDK_Version::jdk(8), JDK_Version::undefined(), JDK_Version::undefined() },
501 { "UseConcMarkSweepGC", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::undefined() },
502 { "AssumeMP", JDK_Version::jdk(10),JDK_Version::undefined(), JDK_Version::undefined() },
503 { "MonitorInUseLists", JDK_Version::jdk(10),JDK_Version::undefined(), JDK_Version::undefined() },
504 { "MaxRAMFraction", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
505 { "MinRAMFraction", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
506 { "InitialRAMFraction", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
507 { "UseMembar", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
508 { "FastTLABRefill", JDK_Version::jdk(10), JDK_Version::jdk(11), JDK_Version::jdk(12) },
509 { "SafepointSpinBeforeYield", JDK_Version::jdk(10), JDK_Version::jdk(11), JDK_Version::jdk(12) },
510 { "DeferThrSuspendLoopCount", JDK_Version::jdk(10), JDK_Version::jdk(11), JDK_Version::jdk(12) },
511 { "DeferPollingPageLoopCount", JDK_Version::jdk(10), JDK_Version::jdk(11), JDK_Version::jdk(12) },
512 { "UseCGroupMemoryLimitForHeap", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::jdk(11) },
513 { "IgnoreUnverifiableClassesDuringDump", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
514 { "CheckEndorsedAndExtDirs", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
515
516 // --- Deprecated alias flags (see also aliased_jvm_flags) - sorted by obsolete_in then expired_in:
517 { "DefaultMaxRAMFraction", JDK_Version::jdk(8), JDK_Version::undefined(), JDK_Version::undefined() },
518 { "CreateMinidumpOnCrash", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::undefined() },
519 { "MustCallLoadClassInternal", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
520 { "UnsyncloadClass", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
521
522 // -------------- Obsolete Flags - sorted by expired_in --------------
523 { "ConvertSleepToYield", JDK_Version::jdk(9), JDK_Version::jdk(10), JDK_Version::jdk(11) },
524 { "ConvertYieldToSleep", JDK_Version::jdk(9), JDK_Version::jdk(10), JDK_Version::jdk(11) },
525 { "MinSleepInterval", JDK_Version::jdk(9), JDK_Version::jdk(10), JDK_Version::jdk(11) },
526 { "CheckAssertionStatusDirectives",JDK_Version::undefined(), JDK_Version::jdk(11), JDK_Version::jdk(12) },
527 { "PermSize", JDK_Version::undefined(), JDK_Version::jdk(8), JDK_Version::undefined() },
528 { "MaxPermSize", JDK_Version::undefined(), JDK_Version::jdk(8), JDK_Version::undefined() },
529 { "SharedReadWriteSize", JDK_Version::undefined(), JDK_Version::jdk(10), JDK_Version::undefined() },
530 { "SharedReadOnlySize", JDK_Version::undefined(), JDK_Version::jdk(10), JDK_Version::undefined() },
531 { "SharedMiscDataSize", JDK_Version::undefined(), JDK_Version::jdk(10), JDK_Version::undefined() },
532 { "SharedMiscCodeSize", JDK_Version::undefined(), JDK_Version::jdk(10), JDK_Version::undefined() },
1838 // Set GC flags
1839 GCArguments::arguments()->initialize_flags();
1840 }
1841
1842 julong Arguments::limit_by_allocatable_memory(julong limit) {
1843 julong max_allocatable;
1844 julong result = limit;
1845 if (os::has_allocatable_memory_limit(&max_allocatable)) {
1846 result = MIN2(result, max_allocatable / MaxVirtMemFraction);
1847 }
1848 return result;
1849 }
1850
1851 // Use static initialization to get the default before parsing
1852 static const size_t DefaultHeapBaseMinAddress = HeapBaseMinAddress;
1853
1854 void Arguments::set_heap_size() {
1855 julong phys_mem =
1856 FLAG_IS_DEFAULT(MaxRAM) ? MIN2(os::physical_memory(), (julong)MaxRAM)
1857 : (julong)MaxRAM;
1858
1859 // Experimental support for CGroup memory limits
1860 if (UseCGroupMemoryLimitForHeap) {
1861 // This is a rough indicator that a CGroup limit may be in force
1862 // for this process
1863 const char* lim_file = "/sys/fs/cgroup/memory/memory.limit_in_bytes";
1864 FILE *fp = fopen(lim_file, "r");
1865 if (fp != NULL) {
1866 julong cgroup_max = 0;
1867 int ret = fscanf(fp, JULONG_FORMAT, &cgroup_max);
1868 if (ret == 1 && cgroup_max > 0) {
1869 // If unlimited, cgroup_max will be a very large, but unspecified
1870 // value, so use initial phys_mem as a limit
1871 log_info(gc, heap)("Setting phys_mem to the min of cgroup limit ("
1872 JULONG_FORMAT "MB) and initial phys_mem ("
1873 JULONG_FORMAT "MB)", cgroup_max/M, phys_mem/M);
1874 phys_mem = MIN2(cgroup_max, phys_mem);
1875 } else {
1876 warning("Unable to read/parse cgroup memory limit from %s: %s",
1877 lim_file, errno != 0 ? strerror(errno) : "unknown error");
1878 }
1879 fclose(fp);
1880 } else {
1881 warning("Unable to open cgroup memory limit file %s (%s)", lim_file, strerror(errno));
1882 }
1883 }
1884
1885 // Convert deprecated flags
1886 if (FLAG_IS_DEFAULT(MaxRAMPercentage) &&
1887 !FLAG_IS_DEFAULT(MaxRAMFraction))
1888 MaxRAMPercentage = 100.0 / MaxRAMFraction;
1889
1890 if (FLAG_IS_DEFAULT(MinRAMPercentage) &&
1891 !FLAG_IS_DEFAULT(MinRAMFraction))
1892 MinRAMPercentage = 100.0 / MinRAMFraction;
1893
1894 if (FLAG_IS_DEFAULT(InitialRAMPercentage) &&
1895 !FLAG_IS_DEFAULT(InitialRAMFraction))
1896 InitialRAMPercentage = 100.0 / InitialRAMFraction;
1897
1898 // If the maximum heap size has not been set with -Xmx,
1899 // then set it as fraction of the size of physical memory,
1900 // respecting the maximum and minimum sizes of the heap.
1901 if (FLAG_IS_DEFAULT(MaxHeapSize)) {
1902 julong reasonable_max = (julong)((phys_mem * MaxRAMPercentage) / 100);
1903 const julong reasonable_min = (julong)((phys_mem * MinRAMPercentage) / 100);
|
492 // - As "deprecated" options age into "obsolete" or "expired" options, the associated "globals"
493 // variable should be removed, as well as users of the variable.
494 // - As "deprecated" options age into "obsolete" options, move the entry into the
495 // "Obsolete Flags" section of the table.
496 // - All expired options should be removed from the table.
497 static SpecialFlag const special_jvm_flags[] = {
498 // -------------- Deprecated Flags --------------
499 // --- Non-alias flags - sorted by obsolete_in then expired_in:
500 { "MaxGCMinorPauseMillis", JDK_Version::jdk(8), JDK_Version::undefined(), JDK_Version::undefined() },
501 { "UseConcMarkSweepGC", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::undefined() },
502 { "AssumeMP", JDK_Version::jdk(10),JDK_Version::undefined(), JDK_Version::undefined() },
503 { "MonitorInUseLists", JDK_Version::jdk(10),JDK_Version::undefined(), JDK_Version::undefined() },
504 { "MaxRAMFraction", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
505 { "MinRAMFraction", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
506 { "InitialRAMFraction", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
507 { "UseMembar", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
508 { "FastTLABRefill", JDK_Version::jdk(10), JDK_Version::jdk(11), JDK_Version::jdk(12) },
509 { "SafepointSpinBeforeYield", JDK_Version::jdk(10), JDK_Version::jdk(11), JDK_Version::jdk(12) },
510 { "DeferThrSuspendLoopCount", JDK_Version::jdk(10), JDK_Version::jdk(11), JDK_Version::jdk(12) },
511 { "DeferPollingPageLoopCount", JDK_Version::jdk(10), JDK_Version::jdk(11), JDK_Version::jdk(12) },
512 { "IgnoreUnverifiableClassesDuringDump", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
513 { "CheckEndorsedAndExtDirs", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
514
515 // --- Deprecated alias flags (see also aliased_jvm_flags) - sorted by obsolete_in then expired_in:
516 { "DefaultMaxRAMFraction", JDK_Version::jdk(8), JDK_Version::undefined(), JDK_Version::undefined() },
517 { "CreateMinidumpOnCrash", JDK_Version::jdk(9), JDK_Version::undefined(), JDK_Version::undefined() },
518 { "MustCallLoadClassInternal", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
519 { "UnsyncloadClass", JDK_Version::jdk(10), JDK_Version::undefined(), JDK_Version::undefined() },
520
521 // -------------- Obsolete Flags - sorted by expired_in --------------
522 { "ConvertSleepToYield", JDK_Version::jdk(9), JDK_Version::jdk(10), JDK_Version::jdk(11) },
523 { "ConvertYieldToSleep", JDK_Version::jdk(9), JDK_Version::jdk(10), JDK_Version::jdk(11) },
524 { "MinSleepInterval", JDK_Version::jdk(9), JDK_Version::jdk(10), JDK_Version::jdk(11) },
525 { "CheckAssertionStatusDirectives",JDK_Version::undefined(), JDK_Version::jdk(11), JDK_Version::jdk(12) },
526 { "PermSize", JDK_Version::undefined(), JDK_Version::jdk(8), JDK_Version::undefined() },
527 { "MaxPermSize", JDK_Version::undefined(), JDK_Version::jdk(8), JDK_Version::undefined() },
528 { "SharedReadWriteSize", JDK_Version::undefined(), JDK_Version::jdk(10), JDK_Version::undefined() },
529 { "SharedReadOnlySize", JDK_Version::undefined(), JDK_Version::jdk(10), JDK_Version::undefined() },
530 { "SharedMiscDataSize", JDK_Version::undefined(), JDK_Version::jdk(10), JDK_Version::undefined() },
531 { "SharedMiscCodeSize", JDK_Version::undefined(), JDK_Version::jdk(10), JDK_Version::undefined() },
1837 // Set GC flags
1838 GCArguments::arguments()->initialize_flags();
1839 }
1840
1841 julong Arguments::limit_by_allocatable_memory(julong limit) {
1842 julong max_allocatable;
1843 julong result = limit;
1844 if (os::has_allocatable_memory_limit(&max_allocatable)) {
1845 result = MIN2(result, max_allocatable / MaxVirtMemFraction);
1846 }
1847 return result;
1848 }
1849
1850 // Use static initialization to get the default before parsing
1851 static const size_t DefaultHeapBaseMinAddress = HeapBaseMinAddress;
1852
1853 void Arguments::set_heap_size() {
1854 julong phys_mem =
1855 FLAG_IS_DEFAULT(MaxRAM) ? MIN2(os::physical_memory(), (julong)MaxRAM)
1856 : (julong)MaxRAM;
1857
1858 // Convert deprecated flags
1859 if (FLAG_IS_DEFAULT(MaxRAMPercentage) &&
1860 !FLAG_IS_DEFAULT(MaxRAMFraction))
1861 MaxRAMPercentage = 100.0 / MaxRAMFraction;
1862
1863 if (FLAG_IS_DEFAULT(MinRAMPercentage) &&
1864 !FLAG_IS_DEFAULT(MinRAMFraction))
1865 MinRAMPercentage = 100.0 / MinRAMFraction;
1866
1867 if (FLAG_IS_DEFAULT(InitialRAMPercentage) &&
1868 !FLAG_IS_DEFAULT(InitialRAMFraction))
1869 InitialRAMPercentage = 100.0 / InitialRAMFraction;
1870
1871 // If the maximum heap size has not been set with -Xmx,
1872 // then set it as fraction of the size of physical memory,
1873 // respecting the maximum and minimum sizes of the heap.
1874 if (FLAG_IS_DEFAULT(MaxHeapSize)) {
1875 julong reasonable_max = (julong)((phys_mem * MaxRAMPercentage) / 100);
1876 const julong reasonable_min = (julong)((phys_mem * MinRAMPercentage) / 100);
|