comparison src/share/vm/runtime/globals.hpp @ 6725:da91efe96a93

6964458: Reimplement class meta-data storage to use native memory Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author coleenp
date Sat, 01 Sep 2012 13:25:18 -0400
parents a5dd6e3ef9f3
children 11fb740ce98f
comparison
equal deleted inserted replaced
6724:36d1d483d5d6 6725:da91efe96a93
173 define_pd_global(intx, InlineUnsafeOps, true); 173 define_pd_global(intx, InlineUnsafeOps, true);
174 define_pd_global(intx, InitialCodeCacheSize, 160*K); 174 define_pd_global(intx, InitialCodeCacheSize, 160*K);
175 define_pd_global(intx, ReservedCodeCacheSize, 32*M); 175 define_pd_global(intx, ReservedCodeCacheSize, 32*M);
176 define_pd_global(intx, CodeCacheExpansionSize, 32*K); 176 define_pd_global(intx, CodeCacheExpansionSize, 32*K);
177 define_pd_global(intx, CodeCacheMinBlockLength, 1); 177 define_pd_global(intx, CodeCacheMinBlockLength, 1);
178 define_pd_global(uintx,PermSize, ScaleForWordSize(4*M)); 178 define_pd_global(uintx,MetaspaceSize, ScaleForWordSize(4*M));
179 define_pd_global(uintx,MaxPermSize, ScaleForWordSize(64*M));
180 define_pd_global(bool, NeverActAsServerClassMachine, true); 179 define_pd_global(bool, NeverActAsServerClassMachine, true);
181 define_pd_global(uint64_t,MaxRAM, 1ULL*G); 180 define_pd_global(uint64_t,MaxRAM, 1ULL*G);
182 #define CI_COMPILER_COUNT 0 181 #define CI_COMPILER_COUNT 0
183 #else 182 #else
184 183
437 // it can be done in the same way as product_rw. 436 // it can be done in the same way as product_rw.
438 437
439 #define RUNTIME_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw, lp64_product) \ 438 #define RUNTIME_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw, lp64_product) \
440 \ 439 \
441 lp64_product(bool, UseCompressedOops, false, \ 440 lp64_product(bool, UseCompressedOops, false, \
442 "Use 32-bit object references in 64-bit VM. " \ 441 "Use 32-bit object references in 64-bit VM " \
442 "lp64_product means flag is always constant in 32 bit VM") \
443 \
444 lp64_product(bool, UseCompressedKlassPointers, false, \
445 "Use 32-bit klass pointers in 64-bit VM " \
443 "lp64_product means flag is always constant in 32 bit VM") \ 446 "lp64_product means flag is always constant in 32 bit VM") \
444 \ 447 \
445 notproduct(bool, CheckCompressedOops, true, \ 448 notproduct(bool, CheckCompressedOops, true, \
446 "generate checks in encoding/decoding code in debug VM") \ 449 "generate checks in encoding/decoding code in debug VM") \
447 \ 450 \
1186 \ 1189 \
1187 product(intx, BiasedLockingDecayTime, 25000, \ 1190 product(intx, BiasedLockingDecayTime, 25000, \
1188 "Decay time (in milliseconds) to re-enable bulk rebiasing of a " \ 1191 "Decay time (in milliseconds) to re-enable bulk rebiasing of a " \
1189 "type after previous bulk rebias") \ 1192 "type after previous bulk rebias") \
1190 \ 1193 \
1191 develop(bool, JavaObjectsInPerm, false, \
1192 "controls whether Classes and interned Strings are allocated" \
1193 "in perm. This purely intended to allow debugging issues" \
1194 "in production.") \
1195 \
1196 /* tracing */ \ 1194 /* tracing */ \
1197 \ 1195 \
1198 notproduct(bool, TraceRuntimeCalls, false, \ 1196 notproduct(bool, TraceRuntimeCalls, false, \
1199 "Trace run-time calls") \ 1197 "Trace run-time calls") \
1200 \ 1198 \
1675 "Size (in cards) of CMS parallel rescan task") \ 1673 "Size (in cards) of CMS parallel rescan task") \
1676 \ 1674 \
1677 product(uintx, CMSConcMarkMultiple, 32, \ 1675 product(uintx, CMSConcMarkMultiple, 32, \
1678 "Size (in cards) of CMS concurrent MT marking task") \ 1676 "Size (in cards) of CMS concurrent MT marking task") \
1679 \ 1677 \
1680 product(uintx, CMSRevisitStackSize, 1*M, \
1681 "Size of CMS KlassKlass revisit stack") \
1682 \
1683 product(bool, CMSAbortSemantics, false, \ 1678 product(bool, CMSAbortSemantics, false, \
1684 "Whether abort-on-overflow semantics is implemented") \ 1679 "Whether abort-on-overflow semantics is implemented") \
1685 \ 1680 \
1686 product(bool, CMSParallelRemarkEnabled, true, \ 1681 product(bool, CMSParallelRemarkEnabled, true, \
1687 "Whether parallel remark enabled (only if ParNewGC)") \ 1682 "Whether parallel remark enabled (only if ParNewGC)") \
1695 " (effective only if CMSParallelSurvivorRemarkEnabled)") \ 1690 " (effective only if CMSParallelSurvivorRemarkEnabled)") \
1696 \ 1691 \
1697 product(bool, CMSConcurrentMTEnabled, true, \ 1692 product(bool, CMSConcurrentMTEnabled, true, \
1698 "Whether multi-threaded concurrent work enabled (if ParNewGC)") \ 1693 "Whether multi-threaded concurrent work enabled (if ParNewGC)") \
1699 \ 1694 \
1700 product(bool, CMSPermGenPrecleaningEnabled, true, \
1701 "Whether concurrent precleaning enabled in perm gen" \
1702 " (effective only when CMSPrecleaningEnabled is true)") \
1703 \
1704 product(bool, CMSPrecleaningEnabled, true, \ 1695 product(bool, CMSPrecleaningEnabled, true, \
1705 "Whether concurrent precleaning enabled") \ 1696 "Whether concurrent precleaning enabled") \
1706 \ 1697 \
1707 product(uintx, CMSPrecleanIter, 3, \ 1698 product(uintx, CMSPrecleanIter, 3, \
1708 "Maximum number of precleaning iteration passes") \ 1699 "Maximum number of precleaning iteration passes") \
1813 "Enable balancing of reference processing queues") \ 1804 "Enable balancing of reference processing queues") \
1814 \ 1805 \
1815 product(intx, CMSTriggerRatio, 80, \ 1806 product(intx, CMSTriggerRatio, 80, \
1816 "Percentage of MinHeapFreeRatio in CMS generation that is " \ 1807 "Percentage of MinHeapFreeRatio in CMS generation that is " \
1817 "allocated before a CMS collection cycle commences") \ 1808 "allocated before a CMS collection cycle commences") \
1818 \
1819 product(intx, CMSTriggerPermRatio, 80, \
1820 "Percentage of MinHeapFreeRatio in the CMS perm generation that " \
1821 "is allocated before a CMS collection cycle commences, that " \
1822 "also collects the perm generation") \
1823 \ 1809 \
1824 product(uintx, CMSBootstrapOccupancy, 50, \ 1810 product(uintx, CMSBootstrapOccupancy, 50, \
1825 "Percentage CMS generation occupancy at which to " \ 1811 "Percentage CMS generation occupancy at which to " \
1826 "initiate CMS collection for bootstrapping collection stats") \ 1812 "initiate CMS collection for bootstrapping collection stats") \
1827 \ 1813 \
1834 "concurrent GC cycle. It us used by GCs that trigger a " \ 1820 "concurrent GC cycle. It us used by GCs that trigger a " \
1835 "concurrent GC cycle based on the occupancy of the entire heap, " \ 1821 "concurrent GC cycle based on the occupancy of the entire heap, " \
1836 "not just one of the generations (e.g., G1). A value of 0 " \ 1822 "not just one of the generations (e.g., G1). A value of 0 " \
1837 "denotes 'do constant GC cycles'.") \ 1823 "denotes 'do constant GC cycles'.") \
1838 \ 1824 \
1839 product(intx, CMSInitiatingPermOccupancyFraction, -1, \
1840 "Percentage CMS perm generation occupancy to start a " \
1841 "CMScollection cycle. A negative value means that " \
1842 "CMSTriggerPermRatio is used") \
1843 \
1844 product(bool, UseCMSInitiatingOccupancyOnly, false, \ 1825 product(bool, UseCMSInitiatingOccupancyOnly, false, \
1845 "Only use occupancy as a crierion for starting a CMS collection") \ 1826 "Only use occupancy as a crierion for starting a CMS collection") \
1846 \ 1827 \
1847 product(intx, CMSIsTooFullPercentage, 98, \ 1828 product(intx, CMSIsTooFullPercentage, 98, \
1848 "An absolute ceiling above which CMS will always consider the " \ 1829 "An absolute ceiling above which CMS will always consider the " \
1898 \ 1879 \
1899 develop(uintx, ObjArrayMarkingStride, 512, \ 1880 develop(uintx, ObjArrayMarkingStride, 512, \
1900 "Number of ObjArray elements to push onto the marking stack" \ 1881 "Number of ObjArray elements to push onto the marking stack" \
1901 "before pushing a continuation entry") \ 1882 "before pushing a continuation entry") \
1902 \ 1883 \
1884 develop(bool, MetadataAllocationFailALot, false, \
1885 "Fail metadata allocations at intervals controlled by " \
1886 "MetadataAllocationFailALotInterval") \
1887 \
1888 develop(uintx, MetadataAllocationFailALotInterval, 1000, \
1889 "metadata allocation failure alot interval") \
1890 \
1891 develop(bool, MetaDataDeallocateALot, false, \
1892 "Deallocation bunches of metadata at intervals controlled by " \
1893 "MetaDataAllocateALotInterval") \
1894 \
1895 develop(uintx, MetaDataDeallocateALotInterval, 100, \
1896 "Metadata deallocation alot interval") \
1897 \
1898 develop(bool, TraceMetadataChunkAllocation, false, \
1899 "Trace humongous metadata allocations") \
1900 \
1901 product(bool, TraceMetadataHumongousAllocation, false, \
1902 "Trace humongous metadata allocations") \
1903 \
1904 develop(bool, TraceMetavirtualspaceAllocation, false, \
1905 "Trace humongous metadata allocations") \
1906 \
1903 notproduct(bool, ExecuteInternalVMTests, false, \ 1907 notproduct(bool, ExecuteInternalVMTests, false, \
1904 "Enable execution of internal VM tests.") \ 1908 "Enable execution of internal VM tests.") \
1905 \ 1909 \
1906 product_pd(bool, UseTLAB, "Use thread-local object allocation") \ 1910 product_pd(bool, UseTLAB, "Use thread-local object allocation") \
1907 \ 1911 \
1917 product(bool, PrintTLAB, false, \ 1921 product(bool, PrintTLAB, false, \
1918 "Print various TLAB related information") \ 1922 "Print various TLAB related information") \
1919 \ 1923 \
1920 product(bool, TLABStats, true, \ 1924 product(bool, TLABStats, true, \
1921 "Print various TLAB related information") \ 1925 "Print various TLAB related information") \
1922 \
1923 product(bool, PrintRevisitStats, false, \
1924 "Print revisit (klass and MDO) stack related information") \
1925 \ 1926 \
1926 EMBEDDED_ONLY(product(bool, LowMemoryProtection, true, \ 1927 EMBEDDED_ONLY(product(bool, LowMemoryProtection, true, \
1927 "Enable LowMemoryProtection")) \ 1928 "Enable LowMemoryProtection")) \
1928 \ 1929 \
1929 product_pd(bool, NeverActAsServerClassMachine, \ 1930 product_pd(bool, NeverActAsServerClassMachine, \
2021 "How much buffer to keep for promotion failure") \ 2022 "How much buffer to keep for promotion failure") \
2022 \ 2023 \
2023 product(uintx, SurvivorPadding, 3, \ 2024 product(uintx, SurvivorPadding, 3, \
2024 "How much buffer to keep for survivor overflow") \ 2025 "How much buffer to keep for survivor overflow") \
2025 \ 2026 \
2026 product(uintx, AdaptivePermSizeWeight, 20, \
2027 "Weight for perm gen exponential resizing, between 0 and 100") \
2028 \
2029 product(uintx, PermGenPadding, 3, \
2030 "How much buffer to keep for perm gen sizing") \
2031 \
2032 product(uintx, ThresholdTolerance, 10, \ 2027 product(uintx, ThresholdTolerance, 10, \
2033 "Allowed collection cost difference between generations") \ 2028 "Allowed collection cost difference between generations") \
2034 \ 2029 \
2035 product(uintx, AdaptiveSizePolicyCollectionCostMargin, 50, \ 2030 product(uintx, AdaptiveSizePolicyCollectionCostMargin, 50, \
2036 "If collection costs are within margin, reduce both by full " \ 2031 "If collection costs are within margin, reduce both by full " \
2213 product_rw(bool, TraceClassUnloading, false, \ 2208 product_rw(bool, TraceClassUnloading, false, \
2214 "Trace unloading of classes") \ 2209 "Trace unloading of classes") \
2215 \ 2210 \
2216 product_rw(bool, TraceLoaderConstraints, false, \ 2211 product_rw(bool, TraceLoaderConstraints, false, \
2217 "Trace loader constraints") \ 2212 "Trace loader constraints") \
2213 \
2214 develop(bool, TraceClassLoaderData, false, \
2215 "Trace class loader loader_data lifetime") \
2216 \
2217 product(uintx, InitialBootClassLoaderMetaspaceSize, 3*M, \
2218 "Initial size of the boot class loader data metaspace") \
2218 \ 2219 \
2219 product(bool, TraceGen0Time, false, \ 2220 product(bool, TraceGen0Time, false, \
2220 "Trace accumulated time for Gen 0 collection") \ 2221 "Trace accumulated time for Gen 0 collection") \
2221 \ 2222 \
2222 product(bool, TraceGen1Time, false, \ 2223 product(bool, TraceGen1Time, false, \
2984 \ 2985 \
2985 product_pd(uintx, NewSizeThreadIncrease, \ 2986 product_pd(uintx, NewSizeThreadIncrease, \
2986 "Additional size added to desired new generation size per " \ 2987 "Additional size added to desired new generation size per " \
2987 "non-daemon thread (in bytes)") \ 2988 "non-daemon thread (in bytes)") \
2988 \ 2989 \
2989 product_pd(uintx, PermSize, \ 2990 product_pd(uintx, MetaspaceSize, \
2990 "Initial size of permanent generation (in bytes)") \ 2991 "Initial size of Metaspaces (in bytes)") \
2991 \ 2992 \
2992 product_pd(uintx, MaxPermSize, \ 2993 product(uintx, MaxMetaspaceSize, max_uintx, \
2993 "Maximum size of permanent generation (in bytes)") \ 2994 "Maximum size of Metaspaces (in bytes)") \
2995 \
2996 product(uintx, ClassMetaspaceSize, NOT_LP64(1*M) LP64_ONLY(512*M), \
2997 "Maximum size of InstanceKlass area in Metaspace used for " \
2998 "UseCompressedKlassPointers") \
2994 \ 2999 \
2995 product(uintx, MinHeapFreeRatio, 40, \ 3000 product(uintx, MinHeapFreeRatio, 40, \
2996 "Min percentage of heap free after GC to avoid expansion") \ 3001 "Min percentage of heap free after GC to avoid expansion") \
2997 \ 3002 \
2998 product(uintx, MaxHeapFreeRatio, 70, \ 3003 product(uintx, MaxHeapFreeRatio, 70, \
3002 "Number of milliseconds per MB of free space in the heap") \ 3007 "Number of milliseconds per MB of free space in the heap") \
3003 \ 3008 \
3004 product(uintx, MinHeapDeltaBytes, ScaleForWordSize(128*K), \ 3009 product(uintx, MinHeapDeltaBytes, ScaleForWordSize(128*K), \
3005 "Min change in heap space due to GC (in bytes)") \ 3010 "Min change in heap space due to GC (in bytes)") \
3006 \ 3011 \
3007 product(uintx, MinPermHeapExpansion, ScaleForWordSize(256*K), \ 3012 product(uintx, MinMetaspaceExpansion, ScaleForWordSize(256*K), \
3008 "Min expansion of permanent heap (in bytes)") \ 3013 "Min expansion of permanent heap (in bytes)") \
3009 \ 3014 \
3010 product(uintx, MaxPermHeapExpansion, ScaleForWordSize(4*M), \ 3015 product(uintx, MaxMetaspaceExpansion, ScaleForWordSize(4*M), \
3011 "Max expansion of permanent heap without full GC (in bytes)") \ 3016 "Max expansion of permanent heap without full GC (in bytes)") \
3012 \ 3017 \
3013 product(intx, QueuedAllocationWarningCount, 0, \ 3018 product(intx, QueuedAllocationWarningCount, 0, \
3014 "Number of times an allocation that queues behind a GC " \ 3019 "Number of times an allocation that queues behind a GC " \
3015 "will retry before printing a warning") \ 3020 "will retry before printing a warning") \
3035 "CMS uses this value only if it falls back to mark sweep." \ 3040 "CMS uses this value only if it falls back to mark sweep." \
3036 "Par compact uses a variable scale based on the density of the" \ 3041 "Par compact uses a variable scale based on the density of the" \
3037 "generation and treats this as the max value when the heap is" \ 3042 "generation and treats this as the max value when the heap is" \
3038 "either completely full or completely empty. Par compact also" \ 3043 "either completely full or completely empty. Par compact also" \
3039 "has a smaller default value; see arguments.cpp.") \ 3044 "has a smaller default value; see arguments.cpp.") \
3040 \
3041 product(uintx, PermMarkSweepDeadRatio, 20, \
3042 "Percentage (0-100) of the perm gen allowed as dead wood." \
3043 "See MarkSweepDeadRatio for collector-specific comments.") \
3044 \ 3045 \
3045 product(intx, MarkSweepAlwaysCompactCount, 4, \ 3046 product(intx, MarkSweepAlwaysCompactCount, 4, \
3046 "How often should we fully compact the heap (ignoring the dead " \ 3047 "How often should we fully compact the heap (ignoring the dead " \
3047 "space parameters)") \ 3048 "space parameters)") \
3048 \ 3049 \
3521 "used in future JVM runs.") \ 3522 "used in future JVM runs.") \
3522 \ 3523 \
3523 product(bool, PrintSharedSpaces, false, \ 3524 product(bool, PrintSharedSpaces, false, \
3524 "Print usage of shared spaces") \ 3525 "Print usage of shared spaces") \
3525 \ 3526 \
3526 product(uintx, SharedDummyBlockSize, 512*M, \ 3527 product(uintx, SharedReadWriteSize, NOT_LP64(12*M) LP64_ONLY(16*M), \
3528 "Size of read-write space in permanent generation (in bytes)") \
3529 \
3530 product(uintx, SharedReadOnlySize, NOT_LP64(12*M) LP64_ONLY(16*M), \
3531 "Size of read-only space in permanent generation (in bytes)") \
3532 \
3533 product(uintx, SharedMiscDataSize, NOT_LP64(2*M) LP64_ONLY(4*M), \
3534 "Size of the shared data area adjacent to the heap (in bytes)") \
3535 \
3536 product(uintx, SharedMiscCodeSize, 120*K, \
3537 "Size of the shared code area adjacent to the heap (in bytes)") \
3538 \
3539 product(uintx, SharedDummyBlockSize, 0, \
3527 "Size of dummy block used to shift heap addresses (in bytes)") \ 3540 "Size of dummy block used to shift heap addresses (in bytes)") \
3528 \
3529 product(uintx, SharedReadWriteSize, NOT_LP64(12*M) LP64_ONLY(13*M), \
3530 "Size of read-write space in permanent generation (in bytes)") \
3531 \
3532 product(uintx, SharedReadOnlySize, 10*M, \
3533 "Size of read-only space in permanent generation (in bytes)") \
3534 \
3535 product(uintx, SharedMiscDataSize, NOT_LP64(4*M) LP64_ONLY(5*M) NOT_PRODUCT(+1*M), \
3536 "Size of the shared data area adjacent to the heap (in bytes)") \
3537 \
3538 product(uintx, SharedMiscCodeSize, 4*M, \
3539 "Size of the shared code area adjacent to the heap (in bytes)") \
3540 \
3541 diagnostic(bool, SharedOptimizeColdStart, true, \
3542 "At dump time, order shared objects to achieve better " \
3543 "cold startup time.") \
3544 \
3545 develop(intx, SharedOptimizeColdStartPolicy, 2, \
3546 "Reordering policy for SharedOptimizeColdStart " \
3547 "0=favor classload-time locality, 1=balanced, " \
3548 "2=favor runtime locality") \
3549 \ 3541 \
3550 diagnostic(bool, SharedSkipVerify, false, \ 3542 diagnostic(bool, SharedSkipVerify, false, \
3551 "Skip assert() and verify() which page-in unwanted shared " \ 3543 "Skip assert() and verify() which page-in unwanted shared " \
3552 "objects. ") \ 3544 "objects. ") \
3553 \ 3545 \