< prev index next >

src/hotspot/share/runtime/arguments.cpp

Print this page




 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);


< prev index next >