499 \
500 develop(bool, LargePagesIndividualAllocationInjectError, false, \
501 "Fail large pages individual allocation") \
502 \
503 develop(bool, TracePageSizes, false, \
504 "Trace page size selection and usage.") \
505 \
506 product(bool, UseNUMA, false, \
507 "Use NUMA if available") \
508 \
509 product(bool, UseNUMAInterleaving, false, \
510 "Interleave memory across NUMA nodes if available") \
511 \
512 product(uintx, NUMAInterleaveGranularity, 2*M, \
513 "Granularity to use for NUMA interleaving on Windows OS") \
514 \
515 product(bool, ForceNUMA, false, \
516 "Force NUMA optimizations on single-node/UMA systems") \
517 \
518 product(uintx, NUMAChunkResizeWeight, 20, \
519 "Percentage (0-100) used to weigh the current sample when " \
520 "computing exponentially decaying average for " \
521 "AdaptiveNUMAChunkSizing") \
522 \
523 product(uintx, NUMASpaceResizeRate, 1*G, \
524 "Do not reallocate more that this amount per collection") \
525 \
526 product(bool, UseAdaptiveNUMAChunkSizing, true, \
527 "Enable adaptive chunk sizing for NUMA") \
528 \
529 product(bool, NUMAStats, false, \
530 "Print NUMA stats in detailed heap information") \
531 \
532 product(uintx, NUMAPageScanRate, 256, \
533 "Maximum number of pages to include in the page scan procedure") \
534 \
535 product_pd(bool, NeedsDeoptSuspend, \
536 "True for register window machines (sparc/ia64)") \
537 \
538 product(intx, UseSSE, 99, \
539 "Highest supported SSE instructions set on x86/x64") \
547 product(uintx, LargePageHeapSizeThreshold, 128*M, \
548 "Use large pages if max heap is at least this big") \
549 \
550 product(bool, ForceTimeHighResolution, false, \
551 "Using high time resolution(For Win32 only)") \
552 \
553 develop(bool, TraceItables, false, \
554 "Trace initialization and use of itables") \
555 \
556 develop(bool, TracePcPatching, false, \
557 "Trace usage of frame::patch_pc") \
558 \
559 develop(bool, TraceJumps, false, \
560 "Trace assembly jumps in thread ring buffer") \
561 \
562 develop(bool, TraceRelocator, false, \
563 "Trace the bytecode relocator") \
564 \
565 develop(bool, TraceLongCompiles, false, \
566 "Print out every time compilation is longer than " \
567 "a given threashold") \
568 \
569 develop(bool, SafepointALot, false, \
570 "Generates a lot of safepoints. Works with " \
571 "GuaranteedSafepointInterval") \
572 \
573 product_pd(bool, BackgroundCompilation, \
574 "A thread requesting compilation is not blocked during " \
575 "compilation") \
576 \
577 product(bool, PrintVMQWaitTime, false, \
578 "Prints out the waiting time in VM operation queue") \
579 \
580 develop(bool, NoYieldsInMicrolock, false, \
581 "Disable yields in microlock") \
582 \
583 develop(bool, TraceOopMapGeneration, false, \
584 "Shows oopmap generation") \
585 \
586 product(bool, MethodFlushing, true, \
587 "Reclamation of zombie and not-entrant methods") \
869 "Tells whether the VM should use system time or a fake timer") \
870 \
871 product(ccstr, NativeMemoryTracking, "off", \
872 "Native memory tracking options") \
873 \
874 diagnostic(bool, PrintNMTStatistics, false, \
875 "Print native memory tracking summary data if it is on") \
876 \
877 diagnostic(bool, AutoShutdownNMT, true, \
878 "Automatically shutdown native memory tracking under stress " \
879 "situation. When set to false, native memory tracking tries to " \
880 "stay alive at the expense of JVM performance") \
881 \
882 diagnostic(bool, LogCompilation, false, \
883 "Log compilation activity in detail to LogFile") \
884 \
885 product(bool, PrintCompilation, false, \
886 "Print compilations") \
887 \
888 diagnostic(bool, TraceNMethodInstalls, false, \
889 "Trace nmethod intallation") \
890 \
891 diagnostic(intx, ScavengeRootsInCode, 2, \
892 "0: do not allow scavengable oops in the code cache; " \
893 "1: allow scavenging from the code cache; " \
894 "2: emit as many constants as the compiler can see") \
895 \
896 product(bool, AlwaysRestoreFPU, false, \
897 "Restore the FPU control word after every JNI call (expensive)") \
898 \
899 diagnostic(bool, PrintCompilation2, false, \
900 "Print additional statistics per compilation") \
901 \
902 diagnostic(bool, PrintAdapterHandlers, false, \
903 "Print code generated for i2c/c2i adapters") \
904 \
905 diagnostic(bool, VerifyAdapterCalls, trueInDebug, \
906 "Verify that i2c/c2i adapters are called properly") \
907 \
908 develop(bool, VerifyAdapterSharing, false, \
909 "Verify that the code for shared adapters is the equivalent") \
941 \
942 product(bool, PrintCodeCache, false, \
943 "Print the code cache memory usage when exiting") \
944 \
945 develop(bool, PrintCodeCache2, false, \
946 "Print detailed usage info on the code cache when exiting") \
947 \
948 product(bool, PrintCodeCacheOnCompilation, false, \
949 "Print the code cache memory usage each time a method is compiled") \
950 \
951 diagnostic(bool, PrintStubCode, false, \
952 "Print generated stub code") \
953 \
954 product(bool, StackTraceInThrowable, true, \
955 "Collect backtrace in throwable when exception happens") \
956 \
957 product(bool, OmitStackTraceInFastThrow, true, \
958 "Omit backtraces for some 'hot' exceptions in optimized code") \
959 \
960 product(bool, ProfilerPrintByteCodeStatistics, false, \
961 "Prints byte code statictics when dumping profiler output") \
962 \
963 product(bool, ProfilerRecordPC, false, \
964 "Collects tick for each 16 byte interval of compiled code") \
965 \
966 product(bool, ProfileVM, false, \
967 "Profiles ticks that fall within VM (either in the VM Thread " \
968 "or VM code called through stubs)") \
969 \
970 product(bool, ProfileIntervals, false, \
971 "Prints profiles for each interval (see ProfileIntervalsTicks)") \
972 \
973 notproduct(bool, ProfilerCheckIntervals, false, \
974 "Collect and print info on spacing of profiler ticks") \
975 \
976 develop(bool, PrintJVMWarnings, false, \
977 "Prints warnings for unimplemented JVM functions") \
978 \
979 product(bool, PrintWarnings, true, \
980 "Prints JVM warnings to output stream") \
981 \
982 notproduct(uintx, WarnOnStalledSpinLock, 0, \
983 "Prints warnings for stalled SpinLocks") \
984 \
985 product(bool, RegisterFinalizersAtInit, true, \
986 "Register finalizable objects at end of Object.<init> or " \
987 "after allocation") \
988 \
989 develop(bool, RegisterReferences, true, \
990 "Tells whether the VM should register soft/weak/final/phantom " \
991 "references") \
992 \
993 develop(bool, IgnoreRewrites, false, \
994 "Supress rewrites of bytecodes in the oopmap generator. " \
995 "This is unsafe!") \
996 \
997 develop(bool, PrintCodeCacheExtension, false, \
998 "Print extension of code cache") \
999 \
1000 develop(bool, UsePrivilegedStack, true, \
1001 "Enable the security JVM functions") \
1002 \
1003 develop(bool, ProtectionDomainVerification, true, \
1004 "Verifies protection domain before resolution in system " \
1005 "dictionary") \
1006 \
1007 product(bool, ClassUnloading, true, \
1008 "Do unloading of classes") \
1009 \
1010 develop(bool, DisableStartThread, false, \
1011 "Disable starting of additional Java threads " \
1012 "(for debugging only)") \
1013 \
1014 develop(bool, MemProfiling, false, \
1256 \
1257 develop(bool, VerifyDependencies, trueInDebug, \
1258 "Exercise and verify the compilation dependency mechanism") \
1259 \
1260 develop(bool, TraceNewOopMapGeneration, false, \
1261 "Trace OopMapGeneration") \
1262 \
1263 develop(bool, TraceNewOopMapGenerationDetailed, false, \
1264 "Trace OopMapGeneration: print detailed cell states") \
1265 \
1266 develop(bool, TimeOopMap, false, \
1267 "Time calls to GenerateOopMap::compute_map() in sum") \
1268 \
1269 develop(bool, TimeOopMap2, false, \
1270 "Time calls to GenerateOopMap::compute_map() individually") \
1271 \
1272 develop(bool, TraceMonitorMismatch, false, \
1273 "Trace monitor matching failures during OopMapGeneration") \
1274 \
1275 develop(bool, TraceOopMapRewrites, false, \
1276 "Trace rewritting of method oops during oop map generation") \
1277 \
1278 develop(bool, TraceSafepoint, false, \
1279 "Trace safepoint operations") \
1280 \
1281 develop(bool, TraceICBuffer, false, \
1282 "Trace usage of IC buffer") \
1283 \
1284 develop(bool, TraceCompiledIC, false, \
1285 "Trace changes of compiled IC") \
1286 \
1287 notproduct(bool, TraceZapDeadLocals, false, \
1288 "Trace zapping dead locals") \
1289 \
1290 develop(bool, TraceStartupTime, false, \
1291 "Trace setup time") \
1292 \
1293 develop(bool, TraceProtectionDomainVerification, false, \
1294 "Trace protection domain verifcation") \
1295 \
1296 develop(bool, TraceClearedExceptions, false, \
1297 "Prints when an exception is forcibly cleared") \
1298 \
1299 product(bool, TraceClassResolution, false, \
1300 "Trace all constant pool resolutions (for debugging)") \
1301 \
1302 product(bool, TraceBiasedLocking, false, \
1303 "Trace biased locking in JVM") \
1304 \
1305 product(bool, TraceMonitorInflation, false, \
1306 "Trace monitor inflation in JVM") \
1307 \
1308 /* gc */ \
1309 \
1310 product(bool, UseSerialGC, false, \
1311 "Use the serial garbage collector") \
1312 \
1313 product(bool, UseG1GC, false, \
1314 "Use the Garbage-First garbage collector") \
1386 "Scavenge youngest generation before each full GC, " \
1387 "used with UseParallelGC") \
1388 \
1389 develop(bool, ScavengeWithObjectsInToSpace, false, \
1390 "Allow scavenges to occur when to_space contains objects.") \
1391 \
1392 product(bool, UseConcMarkSweepGC, false, \
1393 "Use Concurrent Mark-Sweep GC in the old generation") \
1394 \
1395 product(bool, ExplicitGCInvokesConcurrent, false, \
1396 "A System.gc() request invokes a concurrent collection;" \
1397 " (effective only when UseConcMarkSweepGC)") \
1398 \
1399 product(bool, ExplicitGCInvokesConcurrentAndUnloadsClasses, false, \
1400 "A System.gc() request invokes a concurrent collection and " \
1401 "also unloads classes during such a concurrent gc cycle " \
1402 "(effective only when UseConcMarkSweepGC)") \
1403 \
1404 product(bool, GCLockerInvokesConcurrent, false, \
1405 "The exit of a JNI CS necessitating a scavenge also" \
1406 " kicks off a bkgrd concurrent collection") \
1407 \
1408 product(uintx, GCLockerEdenExpansionPercent, 5, \
1409 "How much the GC can expand the eden by while the GC locker " \
1410 "is active (as a percentage)") \
1411 \
1412 diagnostic(intx, GCLockerRetryAllocationCount, 2, \
1413 "Number of times to retry allocations when" \
1414 " blocked by the GC locker") \
1415 \
1416 develop(bool, UseCMSAdaptiveFreeLists, true, \
1417 "Use Adaptive Free Lists in the CMS generation") \
1418 \
1419 develop(bool, UseAsyncConcMarkSweepGC, true, \
1420 "Use Asynchronous Concurrent Mark-Sweep GC in the old generation")\
1421 \
1422 develop(bool, RotateCMSCollectionTypes, false, \
1423 "Rotate the CMS collections among concurrent and STW") \
1424 \
1425 product(bool, UseCMSBestFit, true, \
1426 "Use CMS best fit allocation strategy") \
1481 \
1482 diagnostic(intx, ParGCCardsPerStrideChunk, 256, \
1483 "The number of cards in each chunk of the parallel chunks used " \
1484 "during card table scanning") \
1485 \
1486 product(uintx, CMSParPromoteBlocksToClaim, 16, \
1487 "Number of blocks to attempt to claim when refilling CMS LAB for "\
1488 "parallel GC.") \
1489 \
1490 product(uintx, OldPLABWeight, 50, \
1491 "Percentage (0-100) used to weight the current sample when" \
1492 "computing exponentially decaying average for resizing CMSParPromoteBlocksToClaim.") \
1493 \
1494 product(bool, ResizeOldPLAB, true, \
1495 "Dynamically resize (old gen) promotion labs") \
1496 \
1497 product(bool, PrintOldPLAB, false, \
1498 "Print (old gen) promotion labs sizing decisions") \
1499 \
1500 product(uintx, CMSOldPLABMin, 16, \
1501 "Min size of CMS gen promotion lab caches per worker per blksize")\
1502 \
1503 product(uintx, CMSOldPLABMax, 1024, \
1504 "Max size of CMS gen promotion lab caches per worker per blksize")\
1505 \
1506 product(uintx, CMSOldPLABNumRefills, 4, \
1507 "Nominal number of refills of CMS gen promotion lab cache" \
1508 " per worker per block size") \
1509 \
1510 product(bool, CMSOldPLABResizeQuicker, false, \
1511 "Whether to react on-the-fly during a scavenge to a sudden" \
1512 " change in block demand rate") \
1513 \
1514 product(uintx, CMSOldPLABToleranceFactor, 4, \
1515 "The tolerance of the phase-change detector for on-the-fly" \
1516 " PLAB resizing during a scavenge") \
1517 \
1518 product(uintx, CMSOldPLABReactivityFactor, 2, \
1519 "The gain in the feedback loop for on-the-fly PLAB resizing" \
1520 " during a scavenge") \
1521 \
1522 product(bool, AlwaysPreTouch, false, \
1523 "It forces all freshly committed pages to be pre-touched.") \
1524 \
1539 "automatically adjusted") \
1540 \
1541 product(uintx, CMSIncrementalDutyCycleMin, 0, \
1542 "Lower bound on the duty cycle when CMSIncrementalPacing is " \
1543 "enabled (a percentage, 0-100)") \
1544 \
1545 product(uintx, CMSIncrementalSafetyFactor, 10, \
1546 "Percentage (0-100) used to add conservatism when computing the " \
1547 "duty cycle") \
1548 \
1549 product(uintx, CMSIncrementalOffset, 0, \
1550 "Percentage (0-100) by which the CMS incremental mode duty cycle" \
1551 " is shifted to the right within the period between young GCs") \
1552 \
1553 product(uintx, CMSExpAvgFactor, 50, \
1554 "Percentage (0-100) used to weight the current sample when" \
1555 "computing exponential averages for CMS statistics.") \
1556 \
1557 product(uintx, CMS_FLSWeight, 75, \
1558 "Percentage (0-100) used to weight the current sample when" \
1559 "computing exponentially decating averages for CMS FLS statistics.") \
1560 \
1561 product(uintx, CMS_FLSPadding, 1, \
1562 "The multiple of deviation from mean to use for buffering" \
1563 "against volatility in free list demand.") \
1564 \
1565 product(uintx, FLSCoalescePolicy, 2, \
1566 "CMS: Aggression level for coalescing, increasing from 0 to 4") \
1567 \
1568 product(bool, FLSAlwaysCoalesceLarge, false, \
1569 "CMS: Larger free blocks are always available for coalescing") \
1570 \
1571 product(double, FLSLargestBlockCoalesceProximity, 0.99, \
1572 "CMS: the smaller the percentage the greater the coalition force")\
1573 \
1574 product(double, CMSSmallCoalSurplusPercent, 1.05, \
1575 "CMS: the factor by which to inflate estimated demand of small" \
1576 " block sizes to prevent coalescing with an adjoining block") \
1577 \
1578 product(double, CMSLargeCoalSurplusPercent, 0.95, \
1579 "CMS: the factor by which to inflate estimated demand of large" \
1586 \
1587 product(double, CMSLargeSplitSurplusPercent, 1.00, \
1588 "CMS: the factor by which to inflate estimated demand of large" \
1589 " block sizes to prevent splitting to supply demand for smaller" \
1590 " blocks") \
1591 \
1592 product(bool, CMSExtrapolateSweep, false, \
1593 "CMS: cushion for block demand during sweep") \
1594 \
1595 product(uintx, CMS_SweepWeight, 75, \
1596 "Percentage (0-100) used to weight the current sample when " \
1597 "computing exponentially decaying average for inter-sweep " \
1598 "duration") \
1599 \
1600 product(uintx, CMS_SweepPadding, 1, \
1601 "The multiple of deviation from mean to use for buffering " \
1602 "against volatility in inter-sweep duration.") \
1603 \
1604 product(uintx, CMS_SweepTimerThresholdMillis, 10, \
1605 "Skip block flux-rate sampling for an epoch unless inter-sweep " \
1606 "duration exceeds this threhold in milliseconds") \
1607 \
1608 develop(bool, CMSTraceIncrementalMode, false, \
1609 "Trace CMS incremental mode") \
1610 \
1611 develop(bool, CMSTraceIncrementalPacing, false, \
1612 "Trace CMS incremental mode pacing computation") \
1613 \
1614 develop(bool, CMSTraceThreadState, false, \
1615 "Trace the CMS thread state (enable the trace_state() method)") \
1616 \
1617 product(bool, CMSClassUnloadingEnabled, true, \
1618 "Whether class unloading enabled when using CMS GC") \
1619 \
1620 product(uintx, CMSClassUnloadingMaxInterval, 0, \
1621 "When CMS class unloading is enabled, the maximum CMS cycle count"\
1622 " for which classes may not be unloaded") \
1623 \
1624 product(bool, CMSCompactWhenClearAllSoftRefs, true, \
1625 "Compact when asked to collect CMS gen with clear_all_soft_refs") \
1626 \
1647 "Warn in case of excessive CMS looping") \
1648 \
1649 develop(bool, CMSOverflowEarlyRestoration, false, \
1650 "Whether preserved marks should be restored early") \
1651 \
1652 product(uintx, MarkStackSize, NOT_LP64(32*K) LP64_ONLY(4*M), \
1653 "Size of marking stack") \
1654 \
1655 product(uintx, MarkStackSizeMax, NOT_LP64(4*M) LP64_ONLY(512*M), \
1656 "Max size of marking stack") \
1657 \
1658 notproduct(bool, CMSMarkStackOverflowALot, false, \
1659 "Whether we should simulate frequent marking stack / work queue" \
1660 " overflow") \
1661 \
1662 notproduct(uintx, CMSMarkStackOverflowInterval, 1000, \
1663 "An `interval' counter that determines how frequently" \
1664 " we simulate overflow; a smaller number increases frequency") \
1665 \
1666 product(uintx, CMSMaxAbortablePrecleanLoops, 0, \
1667 "(Temporary, subject to experimentation)" \
1668 "Maximum number of abortable preclean iterations, if > 0") \
1669 \
1670 product(intx, CMSMaxAbortablePrecleanTime, 5000, \
1671 "(Temporary, subject to experimentation)" \
1672 "Maximum time in abortable preclean in ms") \
1673 \
1674 product(uintx, CMSAbortablePrecleanMinWorkPerIteration, 100, \
1675 "(Temporary, subject to experimentation)" \
1676 "Nominal minimum work per abortable preclean iteration") \
1677 \
1678 manageable(intx, CMSAbortablePrecleanWaitMillis, 100, \
1679 "(Temporary, subject to experimentation)" \
1680 " Time that we sleep between iterations when not given" \
1681 " enough work per iteration") \
1682 \
1683 product(uintx, CMSRescanMultiple, 32, \
1684 "Size (in cards) of CMS parallel rescan task") \
1685 \
1686 product(uintx, CMSConcMarkMultiple, 32, \
1687 "Size (in cards) of CMS concurrent MT marking task") \
1688 \
1689 product(bool, CMSAbortSemantics, false, \
1690 "Whether abort-on-overflow semantics is implemented") \
1691 \
1692 product(bool, CMSParallelInitialMarkEnabled, true, \
1693 "Use the parallel initial mark.") \
1694 \
1695 product(bool, CMSParallelRemarkEnabled, true, \
1696 "Whether parallel remark enabled (only if ParNewGC)") \
1697 \
1698 product(bool, CMSParallelSurvivorRemarkEnabled, true, \
1699 "Whether parallel remark of survivor space" \
1700 " enabled (effective only if CMSParallelRemarkEnabled)") \
1701 \
1702 product(bool, CMSPLABRecordAlways, true, \
1703 "Whether to always record survivor space PLAB bdries" \
1704 " (effective only if CMSParallelSurvivorRemarkEnabled)") \
1705 \
1706 product(bool, CMSEdenChunksRecordAlways, true, \
1707 "Whether to always record eden chunks used for " \
1708 "the parallel initial mark or remark of eden" ) \
1709 \
1710 product(bool, CMSPrintEdenSurvivorChunks, false, \
1711 "Print the eden and the survivor chunks used for the parallel " \
1712 "initial mark or remark of the eden/survivor spaces") \
1713 \
1714 product(bool, CMSConcurrentMTEnabled, true, \
1715 "Whether multi-threaded concurrent work enabled (if ParNewGC)") \
1716 \
1717 product(bool, CMSPrecleaningEnabled, true, \
1718 "Whether concurrent precleaning enabled") \
1719 \
1720 product(uintx, CMSPrecleanIter, 3, \
1721 "Maximum number of precleaning iteration passes") \
1722 \
1723 product(uintx, CMSPrecleanNumerator, 2, \
1832 product(uintx, CMSTriggerRatio, 80, \
1833 "Percentage of MinHeapFreeRatio in CMS generation that is " \
1834 "allocated before a CMS collection cycle commences") \
1835 \
1836 product(uintx, CMSBootstrapOccupancy, 50, \
1837 "Percentage CMS generation occupancy at which to " \
1838 "initiate CMS collection for bootstrapping collection stats") \
1839 \
1840 product(intx, CMSInitiatingOccupancyFraction, -1, \
1841 "Percentage CMS generation occupancy to start a CMS collection " \
1842 "cycle. A negative value means that CMSTriggerRatio is used") \
1843 \
1844 product(uintx, InitiatingHeapOccupancyPercent, 45, \
1845 "Percentage of the (entire) heap occupancy to start a " \
1846 "concurrent GC cycle. It is used by GCs that trigger a " \
1847 "concurrent GC cycle based on the occupancy of the entire heap, " \
1848 "not just one of the generations (e.g., G1). A value of 0 " \
1849 "denotes 'do constant GC cycles'.") \
1850 \
1851 product(bool, UseCMSInitiatingOccupancyOnly, false, \
1852 "Only use occupancy as a crierion for starting a CMS collection") \
1853 \
1854 product(uintx, CMSIsTooFullPercentage, 98, \
1855 "An absolute ceiling above which CMS will always consider the " \
1856 "unloading of classes when class unloading is enabled") \
1857 \
1858 develop(bool, CMSTestInFreeList, false, \
1859 "Check if the coalesced range is already in the " \
1860 "free lists as claimed") \
1861 \
1862 notproduct(bool, CMSVerifyReturnedBytes, false, \
1863 "Check that all the garbage collected was returned to the " \
1864 "free lists.") \
1865 \
1866 notproduct(bool, ScavengeALot, false, \
1867 "Force scavenge at every Nth exit from the runtime system " \
1868 "(N=ScavengeALotInterval)") \
1869 \
1870 develop(bool, FullGCALot, false, \
1871 "Force full gc at every Nth exit from the runtime system " \
1872 "(N=FullGCALotInterval)") \
1873 \
1874 notproduct(bool, GCALotAtAllSafepoints, false, \
1875 "Enforce ScavengeALot/GCALot at all potential safepoints") \
1876 \
1877 product(bool, PrintPromotionFailure, false, \
1878 "Print additional diagnostic information following " \
1879 " promotion failure") \
1880 \
1881 notproduct(bool, PromotionFailureALot, false, \
1882 "Use promotion failure handling on every youngest generation " \
1883 "collection") \
1884 \
1885 develop(uintx, PromotionFailureALotCount, 1000, \
1886 "Number of promotion failures occurring at ParGCAllocBuffer" \
1887 "refill attempts (ParNew) or promotion attempts " \
1888 "(other young collectors) ") \
1889 \
1890 develop(uintx, PromotionFailureALotInterval, 5, \
1891 "Total collections between promotion failures alot") \
1892 \
1893 experimental(uintx, WorkStealingSleepMillis, 1, \
1894 "Sleep time when sleep is used for yields") \
1895 \
1896 experimental(uintx, WorkStealingYieldsBeforeSleep, 5000, \
1897 "Number of yields before a sleep is done during workstealing") \
1898 \
1899 experimental(uintx, WorkStealingHardSpins, 4096, \
1900 "Number of iterations in a spin loop between checks on " \
1901 "time out of hard spin") \
1902 \
1903 experimental(uintx, WorkStealingSpinToYieldRatio, 10, \
1904 "Ratio of hard spins to calls to yield") \
1905 \
1906 develop(uintx, ObjArrayMarkingStride, 512, \
1907 "Number of ObjArray elements to push onto the marking stack" \
1908 "before pushing a continuation entry") \
1909 \
1910 develop(bool, MetadataAllocationFailALot, false, \
1911 "Fail metadata allocations at intervals controlled by " \
1912 "MetadataAllocationFailALotInterval") \
1913 \
1914 develop(uintx, MetadataAllocationFailALotInterval, 1000, \
1915 "metadata allocation failure alot interval") \
1916 \
1917 develop(bool, MetaDataDeallocateALot, false, \
1918 "Deallocation bunches of metadata at intervals controlled by " \
1919 "MetaDataAllocateALotInterval") \
1920 \
1921 develop(uintx, MetaDataDeallocateALotInterval, 100, \
1922 "Metadata deallocation alot interval") \
1923 \
1924 develop(bool, TraceMetadataChunkAllocation, false, \
1925 "Trace chunk metadata allocations") \
1926 \
1927 product(bool, TraceMetadataHumongousAllocation, false, \
1928 "Trace humongous metadata allocations") \
1929 \
1930 develop(bool, TraceMetavirtualspaceAllocation, false, \
1931 "Trace virtual space metadata allocations") \
1932 \
1933 notproduct(bool, ExecuteInternalVMTests, false, \
1934 "Enable execution of internal VM tests.") \
1935 \
1936 notproduct(bool, VerboseInternalVMTests, false, \
1937 "Turn on logging for internal VM tests.") \
1938 \
1939 product_pd(bool, UseTLAB, "Use thread-local object allocation") \
1940 \
1941 product_pd(bool, ResizeTLAB, \
1942 "Dynamically resize tlab size for threads") \
1943 \
1944 product(bool, ZeroTLAB, false, \
1945 "Zero out the newly created TLAB") \
1946 \
1947 product(bool, FastTLABRefill, true, \
1948 "Use fast TLAB refill code") \
1949 \
1950 product(bool, PrintTLAB, false, \
1951 "Print various TLAB related information") \
1952 \
1953 product(bool, TLABStats, true, \
1954 "Print various TLAB related information") \
1955 \
1956 EMBEDDED_ONLY(product(bool, LowMemoryProtection, true, \
1957 "Enable LowMemoryProtection")) \
1958 \
1959 product_pd(bool, NeverActAsServerClassMachine, \
1960 "Never act like a server-class machine") \
1961 \
1962 product(bool, AlwaysActAsServerClassMachine, false, \
1975 \
1976 product(uintx, DefaultMaxRAMFraction, 4, \
1977 "Maximum fraction (1/n) of real memory used for maximum heap " \
1978 "size; deprecated: to be renamed to MaxRAMFraction") \
1979 \
1980 product(uintx, MinRAMFraction, 2, \
1981 "Minimum fraction (1/n) of real memory used for maxmimum heap " \
1982 "size on systems with small physical memory size") \
1983 \
1984 product(uintx, InitialRAMFraction, 64, \
1985 "Fraction (1/n) of real memory used for initial heap size") \
1986 \
1987 develop(uintx, MaxVirtMemFraction, 2, \
1988 "Maximum fraction (1/n) of virtual memory used for ergonomically" \
1989 "determining maximum heap size") \
1990 \
1991 product(bool, UseAutoGCSelectPolicy, false, \
1992 "Use automatic collection selection policy") \
1993 \
1994 product(uintx, AutoGCSelectPauseMillis, 5000, \
1995 "Automatic GC selection pause threshhold in ms") \
1996 \
1997 product(bool, UseAdaptiveSizePolicy, true, \
1998 "Use adaptive generation sizing policies") \
1999 \
2000 product(bool, UsePSAdaptiveSurvivorSizePolicy, true, \
2001 "Use adaptive survivor sizing policies") \
2002 \
2003 product(bool, UseAdaptiveGenerationSizePolicyAtMinorCollection, true, \
2004 "Use adaptive young-old sizing policies at minor collections") \
2005 \
2006 product(bool, UseAdaptiveGenerationSizePolicyAtMajorCollection, true, \
2007 "Use adaptive young-old sizing policies at major collections") \
2008 \
2009 product(bool, UseAdaptiveSizePolicyWithSystemGC, false, \
2010 "Use statistics from System.GC for adaptive size policy") \
2011 \
2012 product(bool, UseAdaptiveGCBoundary, false, \
2013 "Allow young-old boundary to move") \
2014 \
2015 develop(bool, TraceAdaptiveGCBoundary, false, \
2016 "Trace young-old boundary moves") \
2017 \
2018 develop(intx, PSAdaptiveSizePolicyResizeVirtualSpaceAlot, -1, \
2019 "Resize the virtual spaces of the young or old generations") \
2020 \
2021 product(uintx, AdaptiveSizeThroughPutPolicy, 0, \
2022 "Policy for changeing generation size for throughput goals") \
2023 \
2024 product(uintx, AdaptiveSizePausePolicy, 0, \
2025 "Policy for changing generation size for pause goals") \
2026 \
2027 develop(bool, PSAdjustTenuredGenForMinorPause, false, \
2028 "Adjust tenured generation to achive a minor pause goal") \
2029 \
2030 develop(bool, PSAdjustYoungGenForMajorPause, false, \
2031 "Adjust young generation to achive a major pause goal") \
2032 \
2033 product(uintx, AdaptiveSizePolicyInitializingSteps, 20, \
2034 "Number of steps where heuristics is used before data is used") \
2035 \
2036 develop(uintx, AdaptiveSizePolicyReadyThreshold, 5, \
2037 "Number of collections before the adaptive sizing is started") \
2038 \
2039 product(uintx, AdaptiveSizePolicyOutputInterval, 0, \
2040 "Collection interval for printing information; zero means never") \
2041 \
2042 product(bool, UseAdaptiveSizePolicyFootprintGoal, true, \
2043 "Use adaptive minimum footprint as a goal") \
2044 \
2045 product(uintx, AdaptiveSizePolicyWeight, 10, \
2046 "Weight given to exponential resizing, between 0 and 100") \
2047 \
2048 product(uintx, AdaptiveTimeWeight, 25, \
2049 "Weight given to time in adaptive policy, between 0 and 100") \
2050 \
2051 product(uintx, PausePadding, 1, \
3512 "Force verification of 1.4 reflection bytecodes. Does not work " \
3513 "in situations like that described in 4486457 or for " \
3514 "constructors generated for serialization, so can not be enabled "\
3515 "in product.") \
3516 \
3517 product(bool, ReflectionWrapResolutionErrors, true, \
3518 "Temporary flag for transition to AbstractMethodError wrapped " \
3519 "in InvocationTargetException. See 6531596") \
3520 \
3521 develop(bool, VerifyLambdaBytecodes, false, \
3522 "Force verification of jdk 8 lambda metafactory bytecodes.") \
3523 \
3524 develop(intx, FastSuperclassLimit, 8, \
3525 "Depth of hardwired instanceof accelerator array") \
3526 \
3527 /* Properties for Java libraries */ \
3528 \
3529 product(uintx, MaxDirectMemorySize, 0, \
3530 "Maximum total size of NIO direct-buffer allocations") \
3531 \
3532 /* temporary developer defined flags */ \
3533 \
3534 diagnostic(bool, UseNewCode, false, \
3535 "Testing Only: Use the new version while testing") \
3536 \
3537 diagnostic(bool, UseNewCode2, false, \
3538 "Testing Only: Use the new version while testing") \
3539 \
3540 diagnostic(bool, UseNewCode3, false, \
3541 "Testing Only: Use the new version while testing") \
3542 \
3543 /* flags for performance data collection */ \
3544 \
3545 product(bool, UsePerfData, falseInEmbedded, \
3546 "Flag to disable jvmstat instrumentation for performance testing" \
3547 "and problem isolation purposes.") \
3548 \
3549 product(bool, PerfDataSaveToFile, false, \
3550 "Save PerfData memory to hsperfdata_<pid> file on exit") \
3551 \
3552 product(ccstr, PerfDataSaveFile, NULL, \
|
499 \
500 develop(bool, LargePagesIndividualAllocationInjectError, false, \
501 "Fail large pages individual allocation") \
502 \
503 develop(bool, TracePageSizes, false, \
504 "Trace page size selection and usage.") \
505 \
506 product(bool, UseNUMA, false, \
507 "Use NUMA if available") \
508 \
509 product(bool, UseNUMAInterleaving, false, \
510 "Interleave memory across NUMA nodes if available") \
511 \
512 product(uintx, NUMAInterleaveGranularity, 2*M, \
513 "Granularity to use for NUMA interleaving on Windows OS") \
514 \
515 product(bool, ForceNUMA, false, \
516 "Force NUMA optimizations on single-node/UMA systems") \
517 \
518 product(uintx, NUMAChunkResizeWeight, 20, \
519 "Percentage (0-100) used to weight the current sample when " \
520 "computing exponentially decaying average for " \
521 "AdaptiveNUMAChunkSizing") \
522 \
523 product(uintx, NUMASpaceResizeRate, 1*G, \
524 "Do not reallocate more that this amount per collection") \
525 \
526 product(bool, UseAdaptiveNUMAChunkSizing, true, \
527 "Enable adaptive chunk sizing for NUMA") \
528 \
529 product(bool, NUMAStats, false, \
530 "Print NUMA stats in detailed heap information") \
531 \
532 product(uintx, NUMAPageScanRate, 256, \
533 "Maximum number of pages to include in the page scan procedure") \
534 \
535 product_pd(bool, NeedsDeoptSuspend, \
536 "True for register window machines (sparc/ia64)") \
537 \
538 product(intx, UseSSE, 99, \
539 "Highest supported SSE instructions set on x86/x64") \
547 product(uintx, LargePageHeapSizeThreshold, 128*M, \
548 "Use large pages if max heap is at least this big") \
549 \
550 product(bool, ForceTimeHighResolution, false, \
551 "Using high time resolution(For Win32 only)") \
552 \
553 develop(bool, TraceItables, false, \
554 "Trace initialization and use of itables") \
555 \
556 develop(bool, TracePcPatching, false, \
557 "Trace usage of frame::patch_pc") \
558 \
559 develop(bool, TraceJumps, false, \
560 "Trace assembly jumps in thread ring buffer") \
561 \
562 develop(bool, TraceRelocator, false, \
563 "Trace the bytecode relocator") \
564 \
565 develop(bool, TraceLongCompiles, false, \
566 "Print out every time compilation is longer than " \
567 "a given threshold") \
568 \
569 develop(bool, SafepointALot, false, \
570 "Generates a lot of safepoints. Works with " \
571 "GuaranteedSafepointInterval") \
572 \
573 product_pd(bool, BackgroundCompilation, \
574 "A thread requesting compilation is not blocked during " \
575 "compilation") \
576 \
577 product(bool, PrintVMQWaitTime, false, \
578 "Prints out the waiting time in VM operation queue") \
579 \
580 develop(bool, NoYieldsInMicrolock, false, \
581 "Disable yields in microlock") \
582 \
583 develop(bool, TraceOopMapGeneration, false, \
584 "Shows oopmap generation") \
585 \
586 product(bool, MethodFlushing, true, \
587 "Reclamation of zombie and not-entrant methods") \
869 "Tells whether the VM should use system time or a fake timer") \
870 \
871 product(ccstr, NativeMemoryTracking, "off", \
872 "Native memory tracking options") \
873 \
874 diagnostic(bool, PrintNMTStatistics, false, \
875 "Print native memory tracking summary data if it is on") \
876 \
877 diagnostic(bool, AutoShutdownNMT, true, \
878 "Automatically shutdown native memory tracking under stress " \
879 "situation. When set to false, native memory tracking tries to " \
880 "stay alive at the expense of JVM performance") \
881 \
882 diagnostic(bool, LogCompilation, false, \
883 "Log compilation activity in detail to LogFile") \
884 \
885 product(bool, PrintCompilation, false, \
886 "Print compilations") \
887 \
888 diagnostic(bool, TraceNMethodInstalls, false, \
889 "Trace nmethod installation") \
890 \
891 diagnostic(intx, ScavengeRootsInCode, 2, \
892 "0: do not allow scavengable oops in the code cache; " \
893 "1: allow scavenging from the code cache; " \
894 "2: emit as many constants as the compiler can see") \
895 \
896 product(bool, AlwaysRestoreFPU, false, \
897 "Restore the FPU control word after every JNI call (expensive)") \
898 \
899 diagnostic(bool, PrintCompilation2, false, \
900 "Print additional statistics per compilation") \
901 \
902 diagnostic(bool, PrintAdapterHandlers, false, \
903 "Print code generated for i2c/c2i adapters") \
904 \
905 diagnostic(bool, VerifyAdapterCalls, trueInDebug, \
906 "Verify that i2c/c2i adapters are called properly") \
907 \
908 develop(bool, VerifyAdapterSharing, false, \
909 "Verify that the code for shared adapters is the equivalent") \
941 \
942 product(bool, PrintCodeCache, false, \
943 "Print the code cache memory usage when exiting") \
944 \
945 develop(bool, PrintCodeCache2, false, \
946 "Print detailed usage info on the code cache when exiting") \
947 \
948 product(bool, PrintCodeCacheOnCompilation, false, \
949 "Print the code cache memory usage each time a method is compiled") \
950 \
951 diagnostic(bool, PrintStubCode, false, \
952 "Print generated stub code") \
953 \
954 product(bool, StackTraceInThrowable, true, \
955 "Collect backtrace in throwable when exception happens") \
956 \
957 product(bool, OmitStackTraceInFastThrow, true, \
958 "Omit backtraces for some 'hot' exceptions in optimized code") \
959 \
960 product(bool, ProfilerPrintByteCodeStatistics, false, \
961 "Prints byte code statistics when dumping profiler output") \
962 \
963 product(bool, ProfilerRecordPC, false, \
964 "Collects tick for each 16 byte interval of compiled code") \
965 \
966 product(bool, ProfileVM, false, \
967 "Profiles ticks that fall within VM (either in the VM Thread " \
968 "or VM code called through stubs)") \
969 \
970 product(bool, ProfileIntervals, false, \
971 "Prints profiles for each interval (see ProfileIntervalsTicks)") \
972 \
973 notproduct(bool, ProfilerCheckIntervals, false, \
974 "Collect and print info on spacing of profiler ticks") \
975 \
976 develop(bool, PrintJVMWarnings, false, \
977 "Prints warnings for unimplemented JVM functions") \
978 \
979 product(bool, PrintWarnings, true, \
980 "Prints JVM warnings to output stream") \
981 \
982 notproduct(uintx, WarnOnStalledSpinLock, 0, \
983 "Prints warnings for stalled SpinLocks") \
984 \
985 product(bool, RegisterFinalizersAtInit, true, \
986 "Register finalizable objects at end of Object.<init> or " \
987 "after allocation") \
988 \
989 develop(bool, RegisterReferences, true, \
990 "Tells whether the VM should register soft/weak/final/phantom " \
991 "references") \
992 \
993 develop(bool, IgnoreRewrites, false, \
994 "Suppress rewrites of bytecodes in the oopmap generator. " \
995 "This is unsafe!") \
996 \
997 develop(bool, PrintCodeCacheExtension, false, \
998 "Print extension of code cache") \
999 \
1000 develop(bool, UsePrivilegedStack, true, \
1001 "Enable the security JVM functions") \
1002 \
1003 develop(bool, ProtectionDomainVerification, true, \
1004 "Verifies protection domain before resolution in system " \
1005 "dictionary") \
1006 \
1007 product(bool, ClassUnloading, true, \
1008 "Do unloading of classes") \
1009 \
1010 develop(bool, DisableStartThread, false, \
1011 "Disable starting of additional Java threads " \
1012 "(for debugging only)") \
1013 \
1014 develop(bool, MemProfiling, false, \
1256 \
1257 develop(bool, VerifyDependencies, trueInDebug, \
1258 "Exercise and verify the compilation dependency mechanism") \
1259 \
1260 develop(bool, TraceNewOopMapGeneration, false, \
1261 "Trace OopMapGeneration") \
1262 \
1263 develop(bool, TraceNewOopMapGenerationDetailed, false, \
1264 "Trace OopMapGeneration: print detailed cell states") \
1265 \
1266 develop(bool, TimeOopMap, false, \
1267 "Time calls to GenerateOopMap::compute_map() in sum") \
1268 \
1269 develop(bool, TimeOopMap2, false, \
1270 "Time calls to GenerateOopMap::compute_map() individually") \
1271 \
1272 develop(bool, TraceMonitorMismatch, false, \
1273 "Trace monitor matching failures during OopMapGeneration") \
1274 \
1275 develop(bool, TraceOopMapRewrites, false, \
1276 "Trace rewriting of method oops during oop map generation") \
1277 \
1278 develop(bool, TraceSafepoint, false, \
1279 "Trace safepoint operations") \
1280 \
1281 develop(bool, TraceICBuffer, false, \
1282 "Trace usage of IC buffer") \
1283 \
1284 develop(bool, TraceCompiledIC, false, \
1285 "Trace changes of compiled IC") \
1286 \
1287 notproduct(bool, TraceZapDeadLocals, false, \
1288 "Trace zapping dead locals") \
1289 \
1290 develop(bool, TraceStartupTime, false, \
1291 "Trace setup time") \
1292 \
1293 develop(bool, TraceProtectionDomainVerification, false, \
1294 "Trace protection domain verification") \
1295 \
1296 develop(bool, TraceClearedExceptions, false, \
1297 "Prints when an exception is forcibly cleared") \
1298 \
1299 product(bool, TraceClassResolution, false, \
1300 "Trace all constant pool resolutions (for debugging)") \
1301 \
1302 product(bool, TraceBiasedLocking, false, \
1303 "Trace biased locking in JVM") \
1304 \
1305 product(bool, TraceMonitorInflation, false, \
1306 "Trace monitor inflation in JVM") \
1307 \
1308 /* gc */ \
1309 \
1310 product(bool, UseSerialGC, false, \
1311 "Use the serial garbage collector") \
1312 \
1313 product(bool, UseG1GC, false, \
1314 "Use the Garbage-First garbage collector") \
1386 "Scavenge youngest generation before each full GC, " \
1387 "used with UseParallelGC") \
1388 \
1389 develop(bool, ScavengeWithObjectsInToSpace, false, \
1390 "Allow scavenges to occur when to_space contains objects.") \
1391 \
1392 product(bool, UseConcMarkSweepGC, false, \
1393 "Use Concurrent Mark-Sweep GC in the old generation") \
1394 \
1395 product(bool, ExplicitGCInvokesConcurrent, false, \
1396 "A System.gc() request invokes a concurrent collection;" \
1397 " (effective only when UseConcMarkSweepGC)") \
1398 \
1399 product(bool, ExplicitGCInvokesConcurrentAndUnloadsClasses, false, \
1400 "A System.gc() request invokes a concurrent collection and " \
1401 "also unloads classes during such a concurrent gc cycle " \
1402 "(effective only when UseConcMarkSweepGC)") \
1403 \
1404 product(bool, GCLockerInvokesConcurrent, false, \
1405 "The exit of a JNI CS necessitating a scavenge also" \
1406 " kicks off a background concurrent collection") \
1407 \
1408 product(uintx, GCLockerEdenExpansionPercent, 5, \
1409 "How much the GC can expand the eden by while the GC locker " \
1410 "is active (as a percentage)") \
1411 \
1412 diagnostic(intx, GCLockerRetryAllocationCount, 2, \
1413 "Number of times to retry allocations when" \
1414 " blocked by the GC locker") \
1415 \
1416 develop(bool, UseCMSAdaptiveFreeLists, true, \
1417 "Use Adaptive Free Lists in the CMS generation") \
1418 \
1419 develop(bool, UseAsyncConcMarkSweepGC, true, \
1420 "Use Asynchronous Concurrent Mark-Sweep GC in the old generation")\
1421 \
1422 develop(bool, RotateCMSCollectionTypes, false, \
1423 "Rotate the CMS collections among concurrent and STW") \
1424 \
1425 product(bool, UseCMSBestFit, true, \
1426 "Use CMS best fit allocation strategy") \
1481 \
1482 diagnostic(intx, ParGCCardsPerStrideChunk, 256, \
1483 "The number of cards in each chunk of the parallel chunks used " \
1484 "during card table scanning") \
1485 \
1486 product(uintx, CMSParPromoteBlocksToClaim, 16, \
1487 "Number of blocks to attempt to claim when refilling CMS LAB for "\
1488 "parallel GC.") \
1489 \
1490 product(uintx, OldPLABWeight, 50, \
1491 "Percentage (0-100) used to weight the current sample when" \
1492 "computing exponentially decaying average for resizing CMSParPromoteBlocksToClaim.") \
1493 \
1494 product(bool, ResizeOldPLAB, true, \
1495 "Dynamically resize (old gen) promotion labs") \
1496 \
1497 product(bool, PrintOldPLAB, false, \
1498 "Print (old gen) promotion labs sizing decisions") \
1499 \
1500 product(uintx, CMSOldPLABMin, 16, \
1501 "Min size of CMS gen promotion lab caches per worker per block size") \
1502 \
1503 product(uintx, CMSOldPLABMax, 1024, \
1504 "Max size of CMS gen promotion lab caches per worker per block size") \
1505 \
1506 product(uintx, CMSOldPLABNumRefills, 4, \
1507 "Nominal number of refills of CMS gen promotion lab cache" \
1508 " per worker per block size") \
1509 \
1510 product(bool, CMSOldPLABResizeQuicker, false, \
1511 "Whether to react on-the-fly during a scavenge to a sudden" \
1512 " change in block demand rate") \
1513 \
1514 product(uintx, CMSOldPLABToleranceFactor, 4, \
1515 "The tolerance of the phase-change detector for on-the-fly" \
1516 " PLAB resizing during a scavenge") \
1517 \
1518 product(uintx, CMSOldPLABReactivityFactor, 2, \
1519 "The gain in the feedback loop for on-the-fly PLAB resizing" \
1520 " during a scavenge") \
1521 \
1522 product(bool, AlwaysPreTouch, false, \
1523 "It forces all freshly committed pages to be pre-touched.") \
1524 \
1539 "automatically adjusted") \
1540 \
1541 product(uintx, CMSIncrementalDutyCycleMin, 0, \
1542 "Lower bound on the duty cycle when CMSIncrementalPacing is " \
1543 "enabled (a percentage, 0-100)") \
1544 \
1545 product(uintx, CMSIncrementalSafetyFactor, 10, \
1546 "Percentage (0-100) used to add conservatism when computing the " \
1547 "duty cycle") \
1548 \
1549 product(uintx, CMSIncrementalOffset, 0, \
1550 "Percentage (0-100) by which the CMS incremental mode duty cycle" \
1551 " is shifted to the right within the period between young GCs") \
1552 \
1553 product(uintx, CMSExpAvgFactor, 50, \
1554 "Percentage (0-100) used to weight the current sample when" \
1555 "computing exponential averages for CMS statistics.") \
1556 \
1557 product(uintx, CMS_FLSWeight, 75, \
1558 "Percentage (0-100) used to weight the current sample when" \
1559 "computing exponentially decaying averages for CMS FLS statistics.") \
1560 \
1561 product(uintx, CMS_FLSPadding, 1, \
1562 "The multiple of deviation from mean to use for buffering" \
1563 "against volatility in free list demand.") \
1564 \
1565 product(uintx, FLSCoalescePolicy, 2, \
1566 "CMS: Aggression level for coalescing, increasing from 0 to 4") \
1567 \
1568 product(bool, FLSAlwaysCoalesceLarge, false, \
1569 "CMS: Larger free blocks are always available for coalescing") \
1570 \
1571 product(double, FLSLargestBlockCoalesceProximity, 0.99, \
1572 "CMS: the smaller the percentage the greater the coalition force")\
1573 \
1574 product(double, CMSSmallCoalSurplusPercent, 1.05, \
1575 "CMS: the factor by which to inflate estimated demand of small" \
1576 " block sizes to prevent coalescing with an adjoining block") \
1577 \
1578 product(double, CMSLargeCoalSurplusPercent, 0.95, \
1579 "CMS: the factor by which to inflate estimated demand of large" \
1586 \
1587 product(double, CMSLargeSplitSurplusPercent, 1.00, \
1588 "CMS: the factor by which to inflate estimated demand of large" \
1589 " block sizes to prevent splitting to supply demand for smaller" \
1590 " blocks") \
1591 \
1592 product(bool, CMSExtrapolateSweep, false, \
1593 "CMS: cushion for block demand during sweep") \
1594 \
1595 product(uintx, CMS_SweepWeight, 75, \
1596 "Percentage (0-100) used to weight the current sample when " \
1597 "computing exponentially decaying average for inter-sweep " \
1598 "duration") \
1599 \
1600 product(uintx, CMS_SweepPadding, 1, \
1601 "The multiple of deviation from mean to use for buffering " \
1602 "against volatility in inter-sweep duration.") \
1603 \
1604 product(uintx, CMS_SweepTimerThresholdMillis, 10, \
1605 "Skip block flux-rate sampling for an epoch unless inter-sweep " \
1606 "duration exceeds this threshold in milliseconds") \
1607 \
1608 develop(bool, CMSTraceIncrementalMode, false, \
1609 "Trace CMS incremental mode") \
1610 \
1611 develop(bool, CMSTraceIncrementalPacing, false, \
1612 "Trace CMS incremental mode pacing computation") \
1613 \
1614 develop(bool, CMSTraceThreadState, false, \
1615 "Trace the CMS thread state (enable the trace_state() method)") \
1616 \
1617 product(bool, CMSClassUnloadingEnabled, true, \
1618 "Whether class unloading enabled when using CMS GC") \
1619 \
1620 product(uintx, CMSClassUnloadingMaxInterval, 0, \
1621 "When CMS class unloading is enabled, the maximum CMS cycle count"\
1622 " for which classes may not be unloaded") \
1623 \
1624 product(bool, CMSCompactWhenClearAllSoftRefs, true, \
1625 "Compact when asked to collect CMS gen with clear_all_soft_refs") \
1626 \
1647 "Warn in case of excessive CMS looping") \
1648 \
1649 develop(bool, CMSOverflowEarlyRestoration, false, \
1650 "Whether preserved marks should be restored early") \
1651 \
1652 product(uintx, MarkStackSize, NOT_LP64(32*K) LP64_ONLY(4*M), \
1653 "Size of marking stack") \
1654 \
1655 product(uintx, MarkStackSizeMax, NOT_LP64(4*M) LP64_ONLY(512*M), \
1656 "Max size of marking stack") \
1657 \
1658 notproduct(bool, CMSMarkStackOverflowALot, false, \
1659 "Whether we should simulate frequent marking stack / work queue" \
1660 " overflow") \
1661 \
1662 notproduct(uintx, CMSMarkStackOverflowInterval, 1000, \
1663 "An `interval' counter that determines how frequently" \
1664 " we simulate overflow; a smaller number increases frequency") \
1665 \
1666 product(uintx, CMSMaxAbortablePrecleanLoops, 0, \
1667 "Maximum number of abortable preclean iterations, if > 0") \
1668 \
1669 product(intx, CMSMaxAbortablePrecleanTime, 5000, \
1670 "Maximum time in abortable preclean in ms") \
1671 \
1672 product(uintx, CMSAbortablePrecleanMinWorkPerIteration, 100, \
1673 "Nominal minimum work per abortable preclean iteration") \
1674 \
1675 manageable(intx, CMSAbortablePrecleanWaitMillis, 100, \
1676 " Time that we sleep between iterations when not given" \
1677 " enough work per iteration") \
1678 \
1679 product(uintx, CMSRescanMultiple, 32, \
1680 "Size (in cards) of CMS parallel rescan task") \
1681 \
1682 product(uintx, CMSConcMarkMultiple, 32, \
1683 "Size (in cards) of CMS concurrent MT marking task") \
1684 \
1685 product(bool, CMSAbortSemantics, false, \
1686 "Whether abort-on-overflow semantics is implemented") \
1687 \
1688 product(bool, CMSParallelInitialMarkEnabled, true, \
1689 "Use the parallel initial mark.") \
1690 \
1691 product(bool, CMSParallelRemarkEnabled, true, \
1692 "Whether parallel remark enabled (only if ParNewGC)") \
1693 \
1694 product(bool, CMSParallelSurvivorRemarkEnabled, true, \
1695 "Whether parallel remark of survivor space" \
1696 " enabled (effective only if CMSParallelRemarkEnabled)") \
1697 \
1698 product(bool, CMSPLABRecordAlways, true, \
1699 "Whether to always record survivor space PLAB boundaries" \
1700 " (effective only if CMSParallelSurvivorRemarkEnabled)") \
1701 \
1702 product(bool, CMSEdenChunksRecordAlways, true, \
1703 "Whether to always record eden chunks used for " \
1704 "the parallel initial mark or remark of eden" ) \
1705 \
1706 product(bool, CMSPrintEdenSurvivorChunks, false, \
1707 "Print the eden and the survivor chunks used for the parallel " \
1708 "initial mark or remark of the eden/survivor spaces") \
1709 \
1710 product(bool, CMSConcurrentMTEnabled, true, \
1711 "Whether multi-threaded concurrent work enabled (if ParNewGC)") \
1712 \
1713 product(bool, CMSPrecleaningEnabled, true, \
1714 "Whether concurrent precleaning enabled") \
1715 \
1716 product(uintx, CMSPrecleanIter, 3, \
1717 "Maximum number of precleaning iteration passes") \
1718 \
1719 product(uintx, CMSPrecleanNumerator, 2, \
1828 product(uintx, CMSTriggerRatio, 80, \
1829 "Percentage of MinHeapFreeRatio in CMS generation that is " \
1830 "allocated before a CMS collection cycle commences") \
1831 \
1832 product(uintx, CMSBootstrapOccupancy, 50, \
1833 "Percentage CMS generation occupancy at which to " \
1834 "initiate CMS collection for bootstrapping collection stats") \
1835 \
1836 product(intx, CMSInitiatingOccupancyFraction, -1, \
1837 "Percentage CMS generation occupancy to start a CMS collection " \
1838 "cycle. A negative value means that CMSTriggerRatio is used") \
1839 \
1840 product(uintx, InitiatingHeapOccupancyPercent, 45, \
1841 "Percentage of the (entire) heap occupancy to start a " \
1842 "concurrent GC cycle. It is used by GCs that trigger a " \
1843 "concurrent GC cycle based on the occupancy of the entire heap, " \
1844 "not just one of the generations (e.g., G1). A value of 0 " \
1845 "denotes 'do constant GC cycles'.") \
1846 \
1847 product(bool, UseCMSInitiatingOccupancyOnly, false, \
1848 "Only use occupancy as a criterion for starting a CMS collection")\
1849 \
1850 product(uintx, CMSIsTooFullPercentage, 98, \
1851 "An absolute ceiling above which CMS will always consider the " \
1852 "unloading of classes when class unloading is enabled") \
1853 \
1854 develop(bool, CMSTestInFreeList, false, \
1855 "Check if the coalesced range is already in the " \
1856 "free lists as claimed") \
1857 \
1858 notproduct(bool, CMSVerifyReturnedBytes, false, \
1859 "Check that all the garbage collected was returned to the " \
1860 "free lists.") \
1861 \
1862 notproduct(bool, ScavengeALot, false, \
1863 "Force scavenge at every Nth exit from the runtime system " \
1864 "(N=ScavengeALotInterval)") \
1865 \
1866 develop(bool, FullGCALot, false, \
1867 "Force full gc at every Nth exit from the runtime system " \
1868 "(N=FullGCALotInterval)") \
1869 \
1870 notproduct(bool, GCALotAtAllSafepoints, false, \
1871 "Enforce ScavengeALot/GCALot at all potential safepoints") \
1872 \
1873 product(bool, PrintPromotionFailure, false, \
1874 "Print additional diagnostic information following " \
1875 " promotion failure") \
1876 \
1877 notproduct(bool, PromotionFailureALot, false, \
1878 "Use promotion failure handling on every youngest generation " \
1879 "collection") \
1880 \
1881 develop(uintx, PromotionFailureALotCount, 1000, \
1882 "Number of promotion failures occurring at ParGCAllocBuffer" \
1883 "refill attempts (ParNew) or promotion attempts " \
1884 "(other young collectors) ") \
1885 \
1886 develop(uintx, PromotionFailureALotInterval, 5, \
1887 "Total collections between promotion failures a lot") \
1888 \
1889 experimental(uintx, WorkStealingSleepMillis, 1, \
1890 "Sleep time when sleep is used for yields") \
1891 \
1892 experimental(uintx, WorkStealingYieldsBeforeSleep, 5000, \
1893 "Number of yields before a sleep is done during work stealing") \
1894 \
1895 experimental(uintx, WorkStealingHardSpins, 4096, \
1896 "Number of iterations in a spin loop between checks on " \
1897 "time out of hard spin") \
1898 \
1899 experimental(uintx, WorkStealingSpinToYieldRatio, 10, \
1900 "Ratio of hard spins to calls to yield") \
1901 \
1902 develop(uintx, ObjArrayMarkingStride, 512, \
1903 "Number of ObjArray elements to push onto the marking stack" \
1904 "before pushing a continuation entry") \
1905 \
1906 develop(bool, MetadataAllocationFailALot, false, \
1907 "Fail metadata allocations at intervals controlled by " \
1908 "MetadataAllocationFailALotInterval") \
1909 \
1910 develop(uintx, MetadataAllocationFailALotInterval, 1000, \
1911 "metadata allocation failure a lot interval") \
1912 \
1913 develop(bool, MetaDataDeallocateALot, false, \
1914 "Deallocation bunches of metadata at intervals controlled by " \
1915 "MetaDataAllocateALotInterval") \
1916 \
1917 develop(uintx, MetaDataDeallocateALotInterval, 100, \
1918 "Metadata deallocation a lot interval") \
1919 \
1920 develop(bool, TraceMetadataChunkAllocation, false, \
1921 "Trace chunk metadata allocations") \
1922 \
1923 product(bool, TraceMetadataHumongousAllocation, false, \
1924 "Trace humongous metadata allocations") \
1925 \
1926 develop(bool, TraceMetavirtualspaceAllocation, false, \
1927 "Trace virtual space metadata allocations") \
1928 \
1929 notproduct(bool, ExecuteInternalVMTests, false, \
1930 "Enable execution of internal VM tests.") \
1931 \
1932 notproduct(bool, VerboseInternalVMTests, false, \
1933 "Turn on logging for internal VM tests.") \
1934 \
1935 product_pd(bool, UseTLAB, "Use thread-local object allocation") \
1936 \
1937 product_pd(bool, ResizeTLAB, \
1938 "Dynamically resize TLAB size for threads") \
1939 \
1940 product(bool, ZeroTLAB, false, \
1941 "Zero out the newly created TLAB") \
1942 \
1943 product(bool, FastTLABRefill, true, \
1944 "Use fast TLAB refill code") \
1945 \
1946 product(bool, PrintTLAB, false, \
1947 "Print various TLAB related information") \
1948 \
1949 product(bool, TLABStats, true, \
1950 "Print various TLAB related information") \
1951 \
1952 EMBEDDED_ONLY(product(bool, LowMemoryProtection, true, \
1953 "Enable LowMemoryProtection")) \
1954 \
1955 product_pd(bool, NeverActAsServerClassMachine, \
1956 "Never act like a server-class machine") \
1957 \
1958 product(bool, AlwaysActAsServerClassMachine, false, \
1971 \
1972 product(uintx, DefaultMaxRAMFraction, 4, \
1973 "Maximum fraction (1/n) of real memory used for maximum heap " \
1974 "size; deprecated: to be renamed to MaxRAMFraction") \
1975 \
1976 product(uintx, MinRAMFraction, 2, \
1977 "Minimum fraction (1/n) of real memory used for maxmimum heap " \
1978 "size on systems with small physical memory size") \
1979 \
1980 product(uintx, InitialRAMFraction, 64, \
1981 "Fraction (1/n) of real memory used for initial heap size") \
1982 \
1983 develop(uintx, MaxVirtMemFraction, 2, \
1984 "Maximum fraction (1/n) of virtual memory used for ergonomically" \
1985 "determining maximum heap size") \
1986 \
1987 product(bool, UseAutoGCSelectPolicy, false, \
1988 "Use automatic collection selection policy") \
1989 \
1990 product(uintx, AutoGCSelectPauseMillis, 5000, \
1991 "Automatic GC selection pause threshold in ms") \
1992 \
1993 product(bool, UseAdaptiveSizePolicy, true, \
1994 "Use adaptive generation sizing policies") \
1995 \
1996 product(bool, UsePSAdaptiveSurvivorSizePolicy, true, \
1997 "Use adaptive survivor sizing policies") \
1998 \
1999 product(bool, UseAdaptiveGenerationSizePolicyAtMinorCollection, true, \
2000 "Use adaptive young-old sizing policies at minor collections") \
2001 \
2002 product(bool, UseAdaptiveGenerationSizePolicyAtMajorCollection, true, \
2003 "Use adaptive young-old sizing policies at major collections") \
2004 \
2005 product(bool, UseAdaptiveSizePolicyWithSystemGC, false, \
2006 "Use statistics from System.GC for adaptive size policy") \
2007 \
2008 product(bool, UseAdaptiveGCBoundary, false, \
2009 "Allow young-old boundary to move") \
2010 \
2011 develop(bool, TraceAdaptiveGCBoundary, false, \
2012 "Trace young-old boundary moves") \
2013 \
2014 develop(intx, PSAdaptiveSizePolicyResizeVirtualSpaceAlot, -1, \
2015 "Resize the virtual spaces of the young or old generations") \
2016 \
2017 product(uintx, AdaptiveSizeThroughPutPolicy, 0, \
2018 "Policy for changing generation size for throughput goals") \
2019 \
2020 product(uintx, AdaptiveSizePausePolicy, 0, \
2021 "Policy for changing generation size for pause goals") \
2022 \
2023 develop(bool, PSAdjustTenuredGenForMinorPause, false, \
2024 "Adjust tenured generation to achieve a minor pause goal") \
2025 \
2026 develop(bool, PSAdjustYoungGenForMajorPause, false, \
2027 "Adjust young generation to achieve a major pause goal") \
2028 \
2029 product(uintx, AdaptiveSizePolicyInitializingSteps, 20, \
2030 "Number of steps where heuristics is used before data is used") \
2031 \
2032 develop(uintx, AdaptiveSizePolicyReadyThreshold, 5, \
2033 "Number of collections before the adaptive sizing is started") \
2034 \
2035 product(uintx, AdaptiveSizePolicyOutputInterval, 0, \
2036 "Collection interval for printing information; zero means never") \
2037 \
2038 product(bool, UseAdaptiveSizePolicyFootprintGoal, true, \
2039 "Use adaptive minimum footprint as a goal") \
2040 \
2041 product(uintx, AdaptiveSizePolicyWeight, 10, \
2042 "Weight given to exponential resizing, between 0 and 100") \
2043 \
2044 product(uintx, AdaptiveTimeWeight, 25, \
2045 "Weight given to time in adaptive policy, between 0 and 100") \
2046 \
2047 product(uintx, PausePadding, 1, \
3508 "Force verification of 1.4 reflection bytecodes. Does not work " \
3509 "in situations like that described in 4486457 or for " \
3510 "constructors generated for serialization, so can not be enabled "\
3511 "in product.") \
3512 \
3513 product(bool, ReflectionWrapResolutionErrors, true, \
3514 "Temporary flag for transition to AbstractMethodError wrapped " \
3515 "in InvocationTargetException. See 6531596") \
3516 \
3517 develop(bool, VerifyLambdaBytecodes, false, \
3518 "Force verification of jdk 8 lambda metafactory bytecodes.") \
3519 \
3520 develop(intx, FastSuperclassLimit, 8, \
3521 "Depth of hardwired instanceof accelerator array") \
3522 \
3523 /* Properties for Java libraries */ \
3524 \
3525 product(uintx, MaxDirectMemorySize, 0, \
3526 "Maximum total size of NIO direct-buffer allocations") \
3527 \
3528 /* Flags used for temporary code during development */ \
3529 \
3530 diagnostic(bool, UseNewCode, false, \
3531 "Testing Only: Use the new version while testing") \
3532 \
3533 diagnostic(bool, UseNewCode2, false, \
3534 "Testing Only: Use the new version while testing") \
3535 \
3536 diagnostic(bool, UseNewCode3, false, \
3537 "Testing Only: Use the new version while testing") \
3538 \
3539 /* flags for performance data collection */ \
3540 \
3541 product(bool, UsePerfData, falseInEmbedded, \
3542 "Flag to disable jvmstat instrumentation for performance testing" \
3543 "and problem isolation purposes.") \
3544 \
3545 product(bool, PerfDataSaveToFile, false, \
3546 "Save PerfData memory to hsperfdata_<pid> file on exit") \
3547 \
3548 product(ccstr, PerfDataSaveFile, NULL, \
|