hotspot/src/share/vm/runtime/globals.hpp
changeset 33144 c56850e328fc
parent 33083 ffe98d5b5621
child 33208 5ec6ffa63c57
child 33198 b37ad9fbf681
equal deleted inserted replaced
33143:2083f82acec8 33144:c56850e328fc
    24 
    24 
    25 #ifndef SHARE_VM_RUNTIME_GLOBALS_HPP
    25 #ifndef SHARE_VM_RUNTIME_GLOBALS_HPP
    26 #define SHARE_VM_RUNTIME_GLOBALS_HPP
    26 #define SHARE_VM_RUNTIME_GLOBALS_HPP
    27 
    27 
    28 #include "utilities/debug.hpp"
    28 #include "utilities/debug.hpp"
       
    29 #include <float.h> // for DBL_MAX
    29 
    30 
    30 // use this for flags that are true per default in the tiered build
    31 // use this for flags that are true per default in the tiered build
    31 // but false in non-tiered builds, and vice versa
    32 // but false in non-tiered builds, and vice versa
    32 #ifdef TIERED
    33 #ifdef TIERED
    33 #define  trueInTiered true
    34 #define  trueInTiered true
  1532           "limiter (a number between 0-100)")                               \
  1533           "limiter (a number between 0-100)")                               \
  1533           range(0, 100)                                                     \
  1534           range(0, 100)                                                     \
  1534                                                                             \
  1535                                                                             \
  1535   product(uint, ParallelGCThreads, 0,                                       \
  1536   product(uint, ParallelGCThreads, 0,                                       \
  1536           "Number of parallel threads parallel gc will use")                \
  1537           "Number of parallel threads parallel gc will use")                \
       
  1538           constraint(ParallelGCThreadsConstraintFunc,AfterErgo)             \
  1537                                                                             \
  1539                                                                             \
  1538   diagnostic(bool, UseSemaphoreGCThreadsSynchronization, true,              \
  1540   diagnostic(bool, UseSemaphoreGCThreadsSynchronization, true,              \
  1539             "Use semaphore synchronization for the GC Threads, "            \
  1541             "Use semaphore synchronization for the GC Threads, "            \
  1540             "instead of synchronization based on mutexes")                  \
  1542             "instead of synchronization based on mutexes")                  \
  1541                                                                             \
  1543                                                                             \
  1563           "How often to provoke splitting a young gen space")               \
  1565           "How often to provoke splitting a young gen space")               \
  1564           range(0, max_uintx)                                               \
  1566           range(0, max_uintx)                                               \
  1565                                                                             \
  1567                                                                             \
  1566   product(uint, ConcGCThreads, 0,                                           \
  1568   product(uint, ConcGCThreads, 0,                                           \
  1567           "Number of threads concurrent gc will use")                       \
  1569           "Number of threads concurrent gc will use")                       \
  1568                                                                             \
  1570           constraint(ConcGCThreadsConstraintFunc,AfterErgo)                 \
  1569   product(size_t, YoungPLABSize, 4096,                                      \
       
  1570           "Size of young gen promotion LAB's (in HeapWords)")               \
       
  1571           constraint(YoungPLABSizeConstraintFunc,AfterMemoryInit)           \
       
  1572                                                                             \
       
  1573   product(size_t, OldPLABSize, 1024,                                        \
       
  1574           "Size of old gen promotion LAB's (in HeapWords), or Number        \
       
  1575           of blocks to attempt to claim when refilling CMS LAB's")          \
       
  1576                                                                             \
  1571                                                                             \
  1577   product(uintx, GCTaskTimeStampEntries, 200,                               \
  1572   product(uintx, GCTaskTimeStampEntries, 200,                               \
  1578           "Number of time stamp entries per gc worker thread")              \
  1573           "Number of time stamp entries per gc worker thread")              \
  1579           range(1, max_uintx)                                               \
  1574           range(1, max_uintx)                                               \
  1580                                                                             \
  1575                                                                             \
  1678                                                                             \
  1673                                                                             \
  1679   diagnostic(uintx, ParGCStridesPerThread, 2,                               \
  1674   diagnostic(uintx, ParGCStridesPerThread, 2,                               \
  1680           "The number of strides per worker thread that we divide up the "  \
  1675           "The number of strides per worker thread that we divide up the "  \
  1681           "card table scanning work into")                                  \
  1676           "card table scanning work into")                                  \
  1682           range(1, max_uintx)                                               \
  1677           range(1, max_uintx)                                               \
       
  1678           constraint(ParGCStridesPerThreadConstraintFunc,AfterErgo)         \
  1683                                                                             \
  1679                                                                             \
  1684   diagnostic(intx, ParGCCardsPerStrideChunk, 256,                           \
  1680   diagnostic(intx, ParGCCardsPerStrideChunk, 256,                           \
  1685           "The number of cards in each chunk of the parallel chunks used "  \
  1681           "The number of cards in each chunk of the parallel chunks used "  \
  1686           "during card table scanning")                                     \
  1682           "during card table scanning")                                     \
  1687           range(1, max_intx)                                                \
  1683           range(1, max_intx)                                                \
  1700                                                                             \
  1696                                                                             \
  1701   product(size_t, CMSOldPLABMax, 1024,                                      \
  1697   product(size_t, CMSOldPLABMax, 1024,                                      \
  1702           "Maximum size of CMS gen promotion LAB caches per worker "        \
  1698           "Maximum size of CMS gen promotion LAB caches per worker "        \
  1703           "per block size")                                                 \
  1699           "per block size")                                                 \
  1704           range(1, max_uintx)                                               \
  1700           range(1, max_uintx)                                               \
       
  1701           constraint(CMSOldPLABMaxConstraintFunc,AfterMemoryInit)           \
  1705                                                                             \
  1702                                                                             \
  1706   product(size_t, CMSOldPLABMin, 16,                                        \
  1703   product(size_t, CMSOldPLABMin, 16,                                        \
  1707           "Minimum size of CMS gen promotion LAB caches per worker "        \
  1704           "Minimum size of CMS gen promotion LAB caches per worker "        \
  1708           "per block size")                                                 \
  1705           "per block size")                                                 \
  1709           range(1, max_uintx)                                               \
  1706           range(1, max_uintx)                                               \
  1710           constraint(CMSOldPLABMinConstraintFunc,AfterErgo)                 \
  1707           constraint(CMSOldPLABMinConstraintFunc,AfterMemoryInit)           \
  1711                                                                             \
  1708                                                                             \
  1712   product(uintx, CMSOldPLABNumRefills, 4,                                   \
  1709   product(uintx, CMSOldPLABNumRefills, 4,                                   \
  1713           "Nominal number of refills of CMS gen promotion LAB cache "       \
  1710           "Nominal number of refills of CMS gen promotion LAB cache "       \
  1714           "per worker per block size")                                      \
  1711           "per worker per block size")                                      \
  1715           range(1, max_uintx)                                               \
  1712           range(1, max_uintx)                                               \
  1764           "CMS: larger free blocks are always available for coalescing")    \
  1761           "CMS: larger free blocks are always available for coalescing")    \
  1765                                                                             \
  1762                                                                             \
  1766   product(double, FLSLargestBlockCoalesceProximity, 0.99,                   \
  1763   product(double, FLSLargestBlockCoalesceProximity, 0.99,                   \
  1767           "CMS: the smaller the percentage the greater the coalescing "     \
  1764           "CMS: the smaller the percentage the greater the coalescing "     \
  1768           "force")                                                          \
  1765           "force")                                                          \
       
  1766           range(0.0, 1.0)                                                   \
  1769                                                                             \
  1767                                                                             \
  1770   product(double, CMSSmallCoalSurplusPercent, 1.05,                         \
  1768   product(double, CMSSmallCoalSurplusPercent, 1.05,                         \
  1771           "CMS: the factor by which to inflate estimated demand of small "  \
  1769           "CMS: the factor by which to inflate estimated demand of small "  \
  1772           "block sizes to prevent coalescing with an adjoining block")      \
  1770           "block sizes to prevent coalescing with an adjoining block")      \
       
  1771           range(0.0, DBL_MAX)                                               \
  1773                                                                             \
  1772                                                                             \
  1774   product(double, CMSLargeCoalSurplusPercent, 0.95,                         \
  1773   product(double, CMSLargeCoalSurplusPercent, 0.95,                         \
  1775           "CMS: the factor by which to inflate estimated demand of large "  \
  1774           "CMS: the factor by which to inflate estimated demand of large "  \
  1776           "block sizes to prevent coalescing with an adjoining block")      \
  1775           "block sizes to prevent coalescing with an adjoining block")      \
       
  1776           range(0.0, DBL_MAX)                                               \
  1777                                                                             \
  1777                                                                             \
  1778   product(double, CMSSmallSplitSurplusPercent, 1.10,                        \
  1778   product(double, CMSSmallSplitSurplusPercent, 1.10,                        \
  1779           "CMS: the factor by which to inflate estimated demand of small "  \
  1779           "CMS: the factor by which to inflate estimated demand of small "  \
  1780           "block sizes to prevent splitting to supply demand for smaller "  \
  1780           "block sizes to prevent splitting to supply demand for smaller "  \
  1781           "blocks")                                                         \
  1781           "blocks")                                                         \
       
  1782           range(0.0, DBL_MAX)                                               \
  1782                                                                             \
  1783                                                                             \
  1783   product(double, CMSLargeSplitSurplusPercent, 1.00,                        \
  1784   product(double, CMSLargeSplitSurplusPercent, 1.00,                        \
  1784           "CMS: the factor by which to inflate estimated demand of large "  \
  1785           "CMS: the factor by which to inflate estimated demand of large "  \
  1785           "block sizes to prevent splitting to supply demand for smaller "  \
  1786           "block sizes to prevent splitting to supply demand for smaller "  \
  1786           "blocks")                                                         \
  1787           "blocks")                                                         \
       
  1788           range(0.0, DBL_MAX)                                               \
  1787                                                                             \
  1789                                                                             \
  1788   product(bool, CMSExtrapolateSweep, false,                                 \
  1790   product(bool, CMSExtrapolateSweep, false,                                 \
  1789           "CMS: cushion for block demand during sweep")                     \
  1791           "CMS: cushion for block demand during sweep")                     \
  1790                                                                             \
  1792                                                                             \
  1791   product(uintx, CMS_SweepWeight, 75,                                       \
  1793   product(uintx, CMS_SweepWeight, 75,                                       \
  1809           "When CMS class unloading is enabled, the maximum CMS cycle "     \
  1811           "When CMS class unloading is enabled, the maximum CMS cycle "     \
  1810           "count for which classes may not be unloaded")                    \
  1812           "count for which classes may not be unloaded")                    \
  1811                                                                             \
  1813                                                                             \
  1812   develop(intx, CMSDictionaryChoice, 0,                                     \
  1814   develop(intx, CMSDictionaryChoice, 0,                                     \
  1813           "Use BinaryTreeDictionary as default in the CMS generation")      \
  1815           "Use BinaryTreeDictionary as default in the CMS generation")      \
       
  1816           range(0, 2)                                                       \
  1814                                                                             \
  1817                                                                             \
  1815   product(uintx, CMSIndexedFreeListReplenish, 4,                            \
  1818   product(uintx, CMSIndexedFreeListReplenish, 4,                            \
  1816           "Replenish an indexed free list with this number of chunks")      \
  1819           "Replenish an indexed free list with this number of chunks")      \
       
  1820           range(1, max_uintx)                                               \
  1817                                                                             \
  1821                                                                             \
  1818   product(bool, CMSReplenishIntermediate, true,                             \
  1822   product(bool, CMSReplenishIntermediate, true,                             \
  1819           "Replenish all intermediate free-list caches")                    \
  1823           "Replenish all intermediate free-list caches")                    \
  1820                                                                             \
  1824                                                                             \
  1821   product(bool, CMSSplitIndexedFreeListBlocks, true,                        \
  1825   product(bool, CMSSplitIndexedFreeListBlocks, true,                        \
  1825   product(bool, CMSLoopWarn, false,                                         \
  1829   product(bool, CMSLoopWarn, false,                                         \
  1826           "Warn in case of excessive CMS looping")                          \
  1830           "Warn in case of excessive CMS looping")                          \
  1827                                                                             \
  1831                                                                             \
  1828   develop(bool, CMSOverflowEarlyRestoration, false,                         \
  1832   develop(bool, CMSOverflowEarlyRestoration, false,                         \
  1829           "Restore preserved marks early")                                  \
  1833           "Restore preserved marks early")                                  \
  1830                                                                             \
       
  1831   product(size_t, MarkStackSize, NOT_LP64(32*K) LP64_ONLY(4*M),             \
       
  1832           "Size of marking stack")                                          \
       
  1833                                                                             \
  1834                                                                             \
  1834   /* where does the range max value of (max_jint - 1) come from? */         \
  1835   /* where does the range max value of (max_jint - 1) come from? */         \
  1835   product(size_t, MarkStackSizeMax, NOT_LP64(4*M) LP64_ONLY(512*M),         \
  1836   product(size_t, MarkStackSizeMax, NOT_LP64(4*M) LP64_ONLY(512*M),         \
  1836           "Maximum size of marking stack")                                  \
  1837           "Maximum size of marking stack")                                  \
  1837           range(1, (max_jint - 1))                                          \
  1838           range(1, (max_jint - 1))                                          \
  1838                                                                             \
  1839                                                                             \
       
  1840   product(size_t, MarkStackSize, NOT_LP64(32*K) LP64_ONLY(4*M),             \
       
  1841           "Size of marking stack")                                          \
       
  1842           constraint(MarkStackSizeConstraintFunc,AfterErgo)                 \
       
  1843                                                                             \
  1839   notproduct(bool, CMSMarkStackOverflowALot, false,                         \
  1844   notproduct(bool, CMSMarkStackOverflowALot, false,                         \
  1840           "Simulate frequent marking stack / work queue overflow")          \
  1845           "Simulate frequent marking stack / work queue overflow")          \
  1841                                                                             \
  1846                                                                             \
  1842   notproduct(uintx, CMSMarkStackOverflowInterval, 1000,                     \
  1847   notproduct(uintx, CMSMarkStackOverflowInterval, 1000,                     \
  1843           "An \"interval\" counter that determines how frequently "         \
  1848           "An \"interval\" counter that determines how frequently "         \
  1846   product(uintx, CMSMaxAbortablePrecleanLoops, 0,                           \
  1851   product(uintx, CMSMaxAbortablePrecleanLoops, 0,                           \
  1847           "Maximum number of abortable preclean iterations, if > 0")        \
  1852           "Maximum number of abortable preclean iterations, if > 0")        \
  1848                                                                             \
  1853                                                                             \
  1849   product(intx, CMSMaxAbortablePrecleanTime, 5000,                          \
  1854   product(intx, CMSMaxAbortablePrecleanTime, 5000,                          \
  1850           "Maximum time in abortable preclean (in milliseconds)")           \
  1855           "Maximum time in abortable preclean (in milliseconds)")           \
       
  1856           range(0, max_intx)                                                \
  1851                                                                             \
  1857                                                                             \
  1852   product(uintx, CMSAbortablePrecleanMinWorkPerIteration, 100,              \
  1858   product(uintx, CMSAbortablePrecleanMinWorkPerIteration, 100,              \
  1853           "Nominal minimum work per abortable preclean iteration")          \
  1859           "Nominal minimum work per abortable preclean iteration")          \
  1854                                                                             \
  1860                                                                             \
  1855   manageable(intx, CMSAbortablePrecleanWaitMillis, 100,                     \
  1861   manageable(intx, CMSAbortablePrecleanWaitMillis, 100,                     \
  1856           "Time that we sleep between iterations when not given "           \
  1862           "Time that we sleep between iterations when not given "           \
  1857           "enough work per iteration")                                      \
  1863           "enough work per iteration")                                      \
       
  1864           range(0, max_intx)                                                \
  1858                                                                             \
  1865                                                                             \
  1859   product(size_t, CMSRescanMultiple, 32,                                    \
  1866   product(size_t, CMSRescanMultiple, 32,                                    \
  1860           "Size (in cards) of CMS parallel rescan task")                    \
  1867           "Size (in cards) of CMS parallel rescan task")                    \
  1861           range(1, max_uintx)                                               \
  1868           range(1, max_uintx)                                               \
  1862                                                                             \
  1869                                                                             \
  1959   develop(bool, CMSTraceSweeper, false,                                     \
  1966   develop(bool, CMSTraceSweeper, false,                                     \
  1960           "Trace some actions of the CMS sweeper")                          \
  1967           "Trace some actions of the CMS sweeper")                          \
  1961                                                                             \
  1968                                                                             \
  1962   product(uintx, CMSWorkQueueDrainThreshold, 10,                            \
  1969   product(uintx, CMSWorkQueueDrainThreshold, 10,                            \
  1963           "Don't drain below this size per parallel worker/thief")          \
  1970           "Don't drain below this size per parallel worker/thief")          \
       
  1971           range(1, max_juint)                                               \
       
  1972           constraint(CMSWorkQueueDrainThresholdConstraintFunc,AfterErgo)    \
  1964                                                                             \
  1973                                                                             \
  1965   manageable(intx, CMSWaitDuration, 2000,                                   \
  1974   manageable(intx, CMSWaitDuration, 2000,                                   \
  1966           "Time in milliseconds that CMS thread waits for young GC")        \
  1975           "Time in milliseconds that CMS thread waits for young GC")        \
  1967                                                                             \
  1976                                                                             \
  1968   develop(uintx, CMSCheckInterval, 1000,                                    \
  1977   develop(uintx, CMSCheckInterval, 1000,                                    \
  2210   develop(bool, TraceAdaptiveGCBoundary, false,                             \
  2219   develop(bool, TraceAdaptiveGCBoundary, false,                             \
  2211           "Trace young-old boundary moves")                                 \
  2220           "Trace young-old boundary moves")                                 \
  2212                                                                             \
  2221                                                                             \
  2213   develop(intx, PSAdaptiveSizePolicyResizeVirtualSpaceAlot, -1,             \
  2222   develop(intx, PSAdaptiveSizePolicyResizeVirtualSpaceAlot, -1,             \
  2214           "Resize the virtual spaces of the young or old generations")      \
  2223           "Resize the virtual spaces of the young or old generations")      \
       
  2224           range(-1, 1)                                                      \
  2215                                                                             \
  2225                                                                             \
  2216   product(uintx, AdaptiveSizeThroughPutPolicy, 0,                           \
  2226   product(uintx, AdaptiveSizeThroughPutPolicy, 0,                           \
  2217           "Policy for changing generation size for throughput goals")       \
  2227           "Policy for changing generation size for throughput goals")       \
       
  2228           range(0, 1)                                                       \
  2218                                                                             \
  2229                                                                             \
  2219   develop(bool, PSAdjustTenuredGenForMinorPause, false,                     \
  2230   develop(bool, PSAdjustTenuredGenForMinorPause, false,                     \
  2220           "Adjust tenured generation to achieve a minor pause goal")        \
  2231           "Adjust tenured generation to achieve a minor pause goal")        \
  2221                                                                             \
  2232                                                                             \
  2222   develop(bool, PSAdjustYoungGenForMajorPause, false,                       \
  2233   develop(bool, PSAdjustYoungGenForMajorPause, false,                       \
  2284           range(1, max_uintx)                                               \
  2295           range(1, max_uintx)                                               \
  2285                                                                             \
  2296                                                                             \
  2286   product(uintx, MaxGCPauseMillis, max_uintx,                               \
  2297   product(uintx, MaxGCPauseMillis, max_uintx,                               \
  2287           "Adaptive size policy maximum GC pause time goal in millisecond, "\
  2298           "Adaptive size policy maximum GC pause time goal in millisecond, "\
  2288           "or (G1 Only) the maximum GC time per MMU time slice")            \
  2299           "or (G1 Only) the maximum GC time per MMU time slice")            \
       
  2300           range(1, max_uintx)                                               \
       
  2301           constraint(MaxGCPauseMillisConstraintFunc,AfterMemoryInit)        \
  2289                                                                             \
  2302                                                                             \
  2290   product(uintx, GCPauseIntervalMillis, 0,                                  \
  2303   product(uintx, GCPauseIntervalMillis, 0,                                  \
  2291           "Time slice for MMU specification")                               \
  2304           "Time slice for MMU specification")                               \
       
  2305           constraint(GCPauseIntervalMillisConstraintFunc,AfterMemoryInit)   \
  2292                                                                             \
  2306                                                                             \
  2293   product(uintx, MaxGCMinorPauseMillis, max_uintx,                          \
  2307   product(uintx, MaxGCMinorPauseMillis, max_uintx,                          \
  2294           "Adaptive size policy maximum GC minor pause time goal "          \
  2308           "Adaptive size policy maximum GC minor pause time goal "          \
  2295           "in millisecond")                                                 \
  2309           "in millisecond")                                                 \
  2296                                                                             \
  2310                                                                             \
  2307   product(uintx, AdaptiveSizeMajorGCDecayTimeScale, 10,                     \
  2321   product(uintx, AdaptiveSizeMajorGCDecayTimeScale, 10,                     \
  2308           "Time scale over which major costs decay")                        \
  2322           "Time scale over which major costs decay")                        \
  2309                                                                             \
  2323                                                                             \
  2310   product(uintx, MinSurvivorRatio, 3,                                       \
  2324   product(uintx, MinSurvivorRatio, 3,                                       \
  2311           "Minimum ratio of young generation/survivor space size")          \
  2325           "Minimum ratio of young generation/survivor space size")          \
       
  2326           range(3, max_uintx)                                               \
  2312                                                                             \
  2327                                                                             \
  2313   product(uintx, InitialSurvivorRatio, 8,                                   \
  2328   product(uintx, InitialSurvivorRatio, 8,                                   \
  2314           "Initial ratio of young generation/survivor space size")          \
  2329           "Initial ratio of young generation/survivor space size")          \
  2315                                                                             \
  2330                                                                             \
  2316   product(size_t, BaseFootPrintEstimate, 256*M,                             \
  2331   product(size_t, BaseFootPrintEstimate, 256*M,                             \
  2330           "OutOfMemoryError is thrown (used with GCTimeLimit)")             \
  2345           "OutOfMemoryError is thrown (used with GCTimeLimit)")             \
  2331           range(0, 100)                                                     \
  2346           range(0, 100)                                                     \
  2332                                                                             \
  2347                                                                             \
  2333   develop(uintx, AdaptiveSizePolicyGCTimeLimitThreshold, 5,                 \
  2348   develop(uintx, AdaptiveSizePolicyGCTimeLimitThreshold, 5,                 \
  2334           "Number of consecutive collections before gc time limit fires")   \
  2349           "Number of consecutive collections before gc time limit fires")   \
       
  2350           range(1, max_uintx)                                               \
  2335                                                                             \
  2351                                                                             \
  2336   product(bool, PrintAdaptiveSizePolicy, false,                             \
  2352   product(bool, PrintAdaptiveSizePolicy, false,                             \
  2337           "Print information about AdaptiveSizePolicy")                     \
  2353           "Print information about AdaptiveSizePolicy")                     \
  2338                                                                             \
  2354                                                                             \
  2339   product(intx, PrefetchCopyIntervalInBytes, -1,                            \
  2355   product(intx, PrefetchCopyIntervalInBytes, -1,                            \
  2429           "Print timestamps for individual gc worker thread tasks")         \
  2445           "Print timestamps for individual gc worker thread tasks")         \
  2430                                                                             \
  2446                                                                             \
  2431   develop(intx, ConcGCYieldTimeout, 0,                                      \
  2447   develop(intx, ConcGCYieldTimeout, 0,                                      \
  2432           "If non-zero, assert that GC threads yield within this "          \
  2448           "If non-zero, assert that GC threads yield within this "          \
  2433           "number of milliseconds")                                         \
  2449           "number of milliseconds")                                         \
       
  2450           range(0, max_intx)                                                \
  2434                                                                             \
  2451                                                                             \
  2435   product(bool, PrintReferenceGC, false,                                    \
  2452   product(bool, PrintReferenceGC, false,                                    \
  2436           "Print times spent handling reference objects during GC "         \
  2453           "Print times spent handling reference objects during GC "         \
  2437           "(enabled only when PrintGCDetails)")                             \
  2454           "(enabled only when PrintGCDetails)")                             \
  2438                                                                             \
  2455                                                                             \
  2467           "Trace class loader loader_data lifetime")                        \
  2484           "Trace class loader loader_data lifetime")                        \
  2468                                                                             \
  2485                                                                             \
  2469   product(size_t, InitialBootClassLoaderMetaspaceSize,                      \
  2486   product(size_t, InitialBootClassLoaderMetaspaceSize,                      \
  2470           NOT_LP64(2200*K) LP64_ONLY(4*M),                                  \
  2487           NOT_LP64(2200*K) LP64_ONLY(4*M),                                  \
  2471           "Initial size of the boot class loader data metaspace")           \
  2488           "Initial size of the boot class loader data metaspace")           \
       
  2489           range(30*K, max_uintx/BytesPerWord)                               \
       
  2490           constraint(InitialBootClassLoaderMetaspaceSizeConstraintFunc, AfterErgo)\
  2472                                                                             \
  2491                                                                             \
  2473   product(bool, TraceYoungGenTime, false,                                   \
  2492   product(bool, TraceYoungGenTime, false,                                   \
  2474           "Trace accumulated time for young collection")                    \
  2493           "Trace accumulated time for young collection")                    \
  2475                                                                             \
  2494                                                                             \
  2476   product(bool, TraceOldGenTime, false,                                     \
  2495   product(bool, TraceOldGenTime, false,                                     \
  2543           "by JNI critical section")                                        \
  2562           "by JNI critical section")                                        \
  2544                                                                             \
  2563                                                                             \
  2545   experimental(double, ObjectCountCutOffPercent, 0.5,                       \
  2564   experimental(double, ObjectCountCutOffPercent, 0.5,                       \
  2546           "The percentage of the used heap that the instances of a class "  \
  2565           "The percentage of the used heap that the instances of a class "  \
  2547           "must occupy for the class to generate a trace event")            \
  2566           "must occupy for the class to generate a trace event")            \
       
  2567           range(0.0, 100.0)                                                 \
  2548                                                                             \
  2568                                                                             \
  2549   /* GC log rotation setting */                                             \
  2569   /* GC log rotation setting */                                             \
  2550                                                                             \
  2570                                                                             \
  2551   product(bool, UseGCLogFileRotation, false,                                \
  2571   product(bool, UseGCLogFileRotation, false,                                \
  2552           "Rotate gclog files (for long running applications). It requires "\
  2572           "Rotate gclog files (for long running applications). It requires "\
  3253           "Size in K to allocate for the Profile Nodes of each thread")     \
  3273           "Size in K to allocate for the Profile Nodes of each thread")     \
  3254                                                                             \
  3274                                                                             \
  3255   /* gc parameters */                                                       \
  3275   /* gc parameters */                                                       \
  3256   product(size_t, InitialHeapSize, 0,                                       \
  3276   product(size_t, InitialHeapSize, 0,                                       \
  3257           "Initial heap size (in bytes); zero means use ergonomics")        \
  3277           "Initial heap size (in bytes); zero means use ergonomics")        \
       
  3278           constraint(InitialHeapSizeConstraintFunc,AfterErgo)               \
  3258                                                                             \
  3279                                                                             \
  3259   product(size_t, MaxHeapSize, ScaleForWordSize(96*M),                      \
  3280   product(size_t, MaxHeapSize, ScaleForWordSize(96*M),                      \
  3260           "Maximum heap size (in bytes)")                                   \
  3281           "Maximum heap size (in bytes)")                                   \
       
  3282           constraint(MaxHeapSizeConstraintFunc,AfterErgo)                   \
  3261                                                                             \
  3283                                                                             \
  3262   product(size_t, OldSize, ScaleForWordSize(4*M),                           \
  3284   product(size_t, OldSize, ScaleForWordSize(4*M),                           \
  3263           "Initial tenured generation size (in bytes)")                     \
  3285           "Initial tenured generation size (in bytes)")                     \
  3264                                                                             \
  3286                                                                             \
  3265   product(size_t, NewSize, ScaleForWordSize(1*M),                           \
  3287   product(size_t, NewSize, ScaleForWordSize(1*M),                           \
  3266           "Initial new generation size (in bytes)")                         \
  3288           "Initial new generation size (in bytes)")                         \
       
  3289           constraint(NewSizeConstraintFunc,AfterErgo)                       \
  3267                                                                             \
  3290                                                                             \
  3268   product(size_t, MaxNewSize, max_uintx,                                    \
  3291   product(size_t, MaxNewSize, max_uintx,                                    \
  3269           "Maximum new generation size (in bytes), max_uintx means set "    \
  3292           "Maximum new generation size (in bytes), max_uintx means set "    \
  3270           "ergonomically")                                                  \
  3293           "ergonomically")                                                  \
  3271                                                                             \
  3294                                                                             \
  3272   product(size_t, PretenureSizeThreshold, 0,                                \
  3295   product(size_t, PretenureSizeThreshold, 0,                                \
  3273           "Maximum size in bytes of objects allocated in DefNew "           \
  3296           "Maximum size in bytes of objects allocated in DefNew "           \
  3274           "generation; zero means no maximum")                              \
  3297           "generation; zero means no maximum")                              \
  3275                                                                             \
  3298                                                                             \
  3276   product(size_t, TLABSize, 0,                                              \
       
  3277           "Starting TLAB size (in bytes); zero means set ergonomically")    \
       
  3278                                                                             \
       
  3279   product(size_t, MinTLABSize, 2*K,                                         \
  3299   product(size_t, MinTLABSize, 2*K,                                         \
  3280           "Minimum allowed TLAB size (in bytes)")                           \
  3300           "Minimum allowed TLAB size (in bytes)")                           \
  3281           range(1, max_uintx)                                               \
  3301           range(1, max_uintx)                                               \
       
  3302           constraint(MinTLABSizeConstraintFunc,AfterMemoryInit)             \
       
  3303                                                                             \
       
  3304   product(size_t, TLABSize, 0,                                              \
       
  3305           "Starting TLAB size (in bytes); zero means set ergonomically")    \
       
  3306           constraint(TLABSizeConstraintFunc,AfterMemoryInit)                \
       
  3307                                                                             \
       
  3308   product(size_t, YoungPLABSize, 4096,                                      \
       
  3309           "Size of young gen promotion LAB's (in HeapWords)")               \
       
  3310           constraint(YoungPLABSizeConstraintFunc,AfterMemoryInit)           \
       
  3311                                                                             \
       
  3312   product(size_t, OldPLABSize, 1024,                                        \
       
  3313           "Size of old gen promotion LAB's (in HeapWords), or Number "      \
       
  3314           "of blocks to attempt to claim when refilling CMS LAB's")         \
       
  3315           constraint(OldPLABSizeConstraintFunc,AfterMemoryInit)             \
  3282                                                                             \
  3316                                                                             \
  3283   product(uintx, TLABAllocationWeight, 35,                                  \
  3317   product(uintx, TLABAllocationWeight, 35,                                  \
  3284           "Allocation averaging weight")                                    \
  3318           "Allocation averaging weight")                                    \
  3285           range(0, 100)                                                     \
  3319           range(0, 100)                                                     \
  3286                                                                             \
  3320                                                                             \
  3297   product(uintx, TLABWasteIncrement,    4,                                  \
  3331   product(uintx, TLABWasteIncrement,    4,                                  \
  3298           "Increment allowed waste at slow allocation")                     \
  3332           "Increment allowed waste at slow allocation")                     \
  3299                                                                             \
  3333                                                                             \
  3300   product(uintx, SurvivorRatio, 8,                                          \
  3334   product(uintx, SurvivorRatio, 8,                                          \
  3301           "Ratio of eden/survivor space size")                              \
  3335           "Ratio of eden/survivor space size")                              \
       
  3336           range(1, max_uintx-2)                                             \
       
  3337           constraint(SurvivorRatioConstraintFunc,AfterMemoryInit)           \
  3302                                                                             \
  3338                                                                             \
  3303   product(uintx, NewRatio, 2,                                               \
  3339   product(uintx, NewRatio, 2,                                               \
  3304           "Ratio of old/new generation sizes")                              \
  3340           "Ratio of old/new generation sizes")                              \
       
  3341           range(0, max_uintx-1)                                             \
  3305                                                                             \
  3342                                                                             \
  3306   product_pd(size_t, NewSizeThreadIncrease,                                 \
  3343   product_pd(size_t, NewSizeThreadIncrease,                                 \
  3307           "Additional size added to desired new generation size per "       \
  3344           "Additional size added to desired new generation size per "       \
  3308           "non-daemon thread (in bytes)")                                   \
  3345           "non-daemon thread (in bytes)")                                   \
  3309                                                                             \
  3346                                                                             \
  3310   product_pd(size_t, MetaspaceSize,                                         \
  3347   product_pd(size_t, MetaspaceSize,                                         \
  3311           "Initial size of Metaspaces (in bytes)")                          \
  3348           "Initial size of Metaspaces (in bytes)")                          \
       
  3349           constraint(MetaspaceSizeConstraintFunc,AfterErgo)                 \
  3312                                                                             \
  3350                                                                             \
  3313   product(size_t, MaxMetaspaceSize, max_uintx,                              \
  3351   product(size_t, MaxMetaspaceSize, max_uintx,                              \
  3314           "Maximum size of Metaspaces (in bytes)")                          \
  3352           "Maximum size of Metaspaces (in bytes)")                          \
       
  3353           constraint(MaxMetaspaceSizeConstraintFunc,AfterErgo)              \
  3315                                                                             \
  3354                                                                             \
  3316   product(size_t, CompressedClassSpaceSize, 1*G,                            \
  3355   product(size_t, CompressedClassSpaceSize, 1*G,                            \
  3317           "Maximum size of class area in Metaspace when compressed "        \
  3356           "Maximum size of class area in Metaspace when compressed "        \
  3318           "class pointers are used")                                        \
  3357           "class pointers are used")                                        \
  3319           range(1*M, 3*G)                                                   \
  3358           range(1*M, 3*G)                                                   \
  3332           range(0, 100)                                                     \
  3371           range(0, 100)                                                     \
  3333           constraint(MaxHeapFreeRatioConstraintFunc,AfterErgo)              \
  3372           constraint(MaxHeapFreeRatioConstraintFunc,AfterErgo)              \
  3334                                                                             \
  3373                                                                             \
  3335   product(intx, SoftRefLRUPolicyMSPerMB, 1000,                              \
  3374   product(intx, SoftRefLRUPolicyMSPerMB, 1000,                              \
  3336           "Number of milliseconds per MB of free space in the heap")        \
  3375           "Number of milliseconds per MB of free space in the heap")        \
       
  3376           range(0, max_intx)                                                \
       
  3377           constraint(SoftRefLRUPolicyMSPerMBConstraintFunc,AfterMemoryInit) \
  3337                                                                             \
  3378                                                                             \
  3338   product(size_t, MinHeapDeltaBytes, ScaleForWordSize(128*K),               \
  3379   product(size_t, MinHeapDeltaBytes, ScaleForWordSize(128*K),               \
  3339           "The minimum change in heap space due to GC (in bytes)")          \
  3380           "The minimum change in heap space due to GC (in bytes)")          \
  3340                                                                             \
  3381                                                                             \
  3341   product(size_t, MinMetaspaceExpansion, ScaleForWordSize(256*K),           \
  3382   product(size_t, MinMetaspaceExpansion, ScaleForWordSize(256*K),           \
  3363   diagnostic(uintx, VerifyGCStartAt,   0,                                   \
  3404   diagnostic(uintx, VerifyGCStartAt,   0,                                   \
  3364           "GC invoke count where +VerifyBefore/AfterGC kicks in")           \
  3405           "GC invoke count where +VerifyBefore/AfterGC kicks in")           \
  3365                                                                             \
  3406                                                                             \
  3366   diagnostic(intx, VerifyGCLevel,     0,                                    \
  3407   diagnostic(intx, VerifyGCLevel,     0,                                    \
  3367           "Generation level at which to start +VerifyBefore/AfterGC")       \
  3408           "Generation level at which to start +VerifyBefore/AfterGC")       \
       
  3409           range(0, 1)                                                       \
  3368                                                                             \
  3410                                                                             \
  3369   product(uintx, MaxTenuringThreshold,    15,                               \
  3411   product(uintx, MaxTenuringThreshold,    15,                               \
  3370           "Maximum value for tenuring threshold")                           \
  3412           "Maximum value for tenuring threshold")                           \
  3371           range(0, markOopDesc::max_age + 1)                                \
  3413           range(0, markOopDesc::max_age + 1)                                \
  3372           constraint(MaxTenuringThresholdConstraintFunc,AfterErgo)          \
  3414           constraint(MaxTenuringThresholdConstraintFunc,AfterErgo)          \
  3421   product(intx, DeferPollingPageLoopCount,     -1,                          \
  3463   product(intx, DeferPollingPageLoopCount,     -1,                          \
  3422           "(Unsafe,Unstable) Number of iterations in safepoint loop "       \
  3464           "(Unsafe,Unstable) Number of iterations in safepoint loop "       \
  3423           "before changing safepoint polling page to RO ")                  \
  3465           "before changing safepoint polling page to RO ")                  \
  3424                                                                             \
  3466                                                                             \
  3425   product(intx, SafepointSpinBeforeYield, 2000, "(Unstable)")               \
  3467   product(intx, SafepointSpinBeforeYield, 2000, "(Unstable)")               \
       
  3468           range(0, max_intx)                                                \
  3426                                                                             \
  3469                                                                             \
  3427   product(bool, PSChunkLargeArrays, true,                                   \
  3470   product(bool, PSChunkLargeArrays, true,                                   \
  3428           "Process large arrays in chunks")                                 \
  3471           "Process large arrays in chunks")                                 \
  3429                                                                             \
  3472                                                                             \
  3430   product(uintx, GCDrainStackTargetSize, 64,                                \
  3473   product(uintx, GCDrainStackTargetSize, 64,                                \