Mercurial > hg > truffle
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 \ |