src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep

Wed, 23 Dec 2009 09:23:54 -0800

author
ysr
date
Wed, 23 Dec 2009 09:23:54 -0800
changeset 1580
e018e6884bd8
parent 1370
05f89f00a864
child 1876
a8127dc669ba
permissions
-rw-r--r--

6631166: CMS: better heuristics when combatting fragmentation
Summary: Autonomic per-worker free block cache sizing, tunable coalition policies, fixes to per-size block statistics, retuned gain and bandwidth of some feedback loop filters to allow quicker reactivity to abrupt changes in ambient demand, and other heuristics to reduce fragmentation of the CMS old gen. Also tightened some assertions, including those related to locking.
Reviewed-by: jmasa

duke@435 1 //
xdono@1014 2 // Copyright 2004-2009 Sun Microsystems, Inc. All Rights Reserved.
duke@435 3 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@435 4 //
duke@435 5 // This code is free software; you can redistribute it and/or modify it
duke@435 6 // under the terms of the GNU General Public License version 2 only, as
duke@435 7 // published by the Free Software Foundation.
duke@435 8 //
duke@435 9 // This code is distributed in the hope that it will be useful, but WITHOUT
duke@435 10 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@435 11 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@435 12 // version 2 for more details (a copy is included in the LICENSE file that
duke@435 13 // accompanied this code).
duke@435 14 //
duke@435 15 // You should have received a copy of the GNU General Public License version
duke@435 16 // 2 along with this work; if not, write to the Free Software Foundation,
duke@435 17 // Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@435 18 //
duke@435 19 // Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
duke@435 20 // CA 95054 USA or visit www.sun.com if you need additional information or
duke@435 21 // have any questions.
duke@435 22 //
duke@435 23 //
duke@435 24
duke@435 25 // NOTE: DO NOT CHANGE THIS COPYRIGHT TO NEW STYLE - IT WILL BREAK makeDeps!
duke@435 26
duke@435 27 binaryTreeDictionary.cpp allocationStats.hpp
duke@435 28 binaryTreeDictionary.cpp binaryTreeDictionary.hpp
duke@435 29 binaryTreeDictionary.cpp globals.hpp
duke@435 30 binaryTreeDictionary.cpp ostream.hpp
coleenp@963 31 binaryTreeDictionary.cpp space.inline.hpp
jmasa@698 32 binaryTreeDictionary.cpp spaceDecorator.hpp
duke@435 33
duke@435 34 binaryTreeDictionary.hpp freeBlockDictionary.hpp
duke@435 35 binaryTreeDictionary.hpp freeList.hpp
duke@435 36
duke@435 37 cmsAdaptiveSizePolicy.cpp cmsAdaptiveSizePolicy.hpp
duke@435 38 cmsAdaptiveSizePolicy.cpp defNewGeneration.hpp
duke@435 39 cmsAdaptiveSizePolicy.cpp gcStats.hpp
duke@435 40 cmsAdaptiveSizePolicy.cpp genCollectedHeap.hpp
duke@435 41 cmsAdaptiveSizePolicy.cpp thread.hpp
duke@435 42 cmsAdaptiveSizePolicy.cpp os_<os_family>.inline.hpp
duke@435 43
duke@435 44 cmsAdaptiveSizePolicy.hpp adaptiveSizePolicy.hpp
duke@435 45 cmsAdaptiveSizePolicy.hpp timer.hpp
duke@435 46
duke@435 47 cmsCollectorPolicy.cpp arguments.hpp
duke@435 48 cmsCollectorPolicy.cpp cardTableRS.hpp
duke@435 49 cmsCollectorPolicy.cpp cmsAdaptiveSizePolicy.hpp
duke@435 50 cmsCollectorPolicy.cpp cmsGCAdaptivePolicyCounters.hpp
duke@435 51 cmsCollectorPolicy.cpp cmsCollectorPolicy.hpp
duke@435 52 cmsCollectorPolicy.cpp collectorPolicy.hpp
duke@435 53 cmsCollectorPolicy.cpp gcLocker.inline.hpp
duke@435 54 cmsCollectorPolicy.cpp genCollectedHeap.hpp
duke@435 55 cmsCollectorPolicy.cpp gcPolicyCounters.hpp
duke@435 56 cmsCollectorPolicy.cpp generationSpec.hpp
duke@435 57 cmsCollectorPolicy.cpp globals_extension.hpp
duke@435 58 cmsCollectorPolicy.cpp handles.inline.hpp
duke@435 59 cmsCollectorPolicy.cpp java.hpp
duke@435 60 cmsCollectorPolicy.cpp parNewGeneration.hpp
duke@435 61 cmsCollectorPolicy.cpp space.hpp
duke@435 62 cmsCollectorPolicy.cpp thread_<os_family>.inline.hpp
duke@435 63 cmsCollectorPolicy.cpp universe.hpp
duke@435 64 cmsCollectorPolicy.cpp vmGCOperations.hpp
duke@435 65 cmsCollectorPolicy.cpp vmThread.hpp
duke@435 66
duke@435 67 cmsCollectorPolicy.hpp collectorPolicy.hpp
duke@435 68
duke@435 69 cmsGCAdaptivePolicyCounters.cpp cmsGCAdaptivePolicyCounters.hpp
duke@435 70 cmsGCAdaptivePolicyCounters.cpp resourceArea.hpp
duke@435 71
duke@435 72 cmsGCAdaptivePolicyCounters.hpp cmsAdaptiveSizePolicy.hpp
duke@435 73 cmsGCAdaptivePolicyCounters.hpp gcAdaptivePolicyCounters.hpp
duke@435 74 cmsGCAdaptivePolicyCounters.hpp gcStats.hpp
duke@435 75 cmsGCAdaptivePolicyCounters.hpp perfData.hpp
duke@435 76
duke@435 77 cmsLockVerifier.cpp cmsLockVerifier.hpp
duke@435 78 cmsLockVerifier.cpp concurrentMarkSweepThread.hpp
duke@435 79 cmsLockVerifier.cpp vmThread.hpp
duke@435 80
duke@435 81 cmsLockVerifier.hpp mutex.hpp
duke@435 82
duke@435 83 cmsOopClosures.hpp genOopClosures.hpp
duke@435 84
duke@435 85 cmsOopClosures.inline.hpp cmsOopClosures.hpp
duke@435 86 cmsOopClosures.inline.hpp concurrentMarkSweepGeneration.hpp
duke@435 87
duke@435 88 cmsPermGen.cpp blockOffsetTable.hpp
duke@435 89 cmsPermGen.cpp cSpaceCounters.hpp
duke@435 90 cmsPermGen.cpp cmsPermGen.hpp
duke@435 91 cmsPermGen.cpp collectedHeap.inline.hpp
duke@435 92 cmsPermGen.cpp compactPermGen.hpp
duke@435 93 cmsPermGen.cpp concurrentMarkSweepGeneration.inline.hpp
duke@435 94 cmsPermGen.cpp genCollectedHeap.hpp
duke@435 95 cmsPermGen.cpp generation.inline.hpp
duke@435 96 cmsPermGen.cpp java.hpp
duke@435 97 cmsPermGen.cpp oop.inline.hpp
duke@435 98 cmsPermGen.cpp permGen.hpp
duke@435 99 cmsPermGen.cpp universe.hpp
duke@435 100
duke@435 101 cmsPermGen.hpp concurrentMarkSweepGeneration.hpp
duke@435 102 cmsPermGen.hpp permGen.hpp
duke@435 103
duke@435 104 compactibleFreeListSpace.cpp allocation.inline.hpp
duke@435 105 compactibleFreeListSpace.cpp blockOffsetTable.inline.hpp
duke@435 106 compactibleFreeListSpace.cpp cmsLockVerifier.hpp
duke@435 107 compactibleFreeListSpace.cpp collectedHeap.hpp
duke@435 108 compactibleFreeListSpace.cpp compactibleFreeListSpace.hpp
duke@435 109 compactibleFreeListSpace.cpp concurrentMarkSweepGeneration.inline.hpp
duke@435 110 compactibleFreeListSpace.cpp concurrentMarkSweepThread.hpp
duke@435 111 compactibleFreeListSpace.cpp copy.hpp
duke@435 112 compactibleFreeListSpace.cpp globals.hpp
duke@435 113 compactibleFreeListSpace.cpp handles.inline.hpp
duke@435 114 compactibleFreeListSpace.cpp init.hpp
duke@435 115 compactibleFreeListSpace.cpp java.hpp
duke@435 116 compactibleFreeListSpace.cpp liveRange.hpp
duke@435 117 compactibleFreeListSpace.cpp oop.inline.hpp
duke@435 118 compactibleFreeListSpace.cpp resourceArea.hpp
jmasa@698 119 compactibleFreeListSpace.cpp spaceDecorator.hpp
duke@435 120 compactibleFreeListSpace.cpp universe.inline.hpp
duke@435 121 compactibleFreeListSpace.cpp vmThread.hpp
duke@435 122
duke@435 123 compactibleFreeListSpace.hpp binaryTreeDictionary.hpp
duke@435 124 compactibleFreeListSpace.hpp freeList.hpp
duke@435 125 compactibleFreeListSpace.hpp space.hpp
duke@435 126
duke@435 127 compactingPermGenGen.cpp concurrentMarkSweepGeneration.inline.hpp
duke@435 128
duke@435 129 concurrentMarkSweepGeneration.cpp cardTableRS.hpp
duke@435 130 concurrentMarkSweepGeneration.cpp cmsAdaptiveSizePolicy.hpp
duke@435 131 concurrentMarkSweepGeneration.cpp cmsCollectorPolicy.hpp
duke@435 132 concurrentMarkSweepGeneration.cpp cmsGCAdaptivePolicyCounters.hpp
duke@435 133 concurrentMarkSweepGeneration.cpp cmsOopClosures.inline.hpp
duke@435 134 concurrentMarkSweepGeneration.cpp codeCache.hpp
duke@435 135 concurrentMarkSweepGeneration.cpp collectedHeap.inline.hpp
duke@435 136 concurrentMarkSweepGeneration.cpp collectorCounters.hpp
duke@435 137 concurrentMarkSweepGeneration.cpp collectorPolicy.hpp
duke@435 138 concurrentMarkSweepGeneration.cpp compactibleFreeListSpace.hpp
duke@435 139 concurrentMarkSweepGeneration.cpp concurrentMarkSweepGeneration.inline.hpp
duke@435 140 concurrentMarkSweepGeneration.cpp concurrentMarkSweepThread.hpp
duke@435 141 concurrentMarkSweepGeneration.cpp gcLocker.inline.hpp
duke@435 142 concurrentMarkSweepGeneration.cpp genCollectedHeap.hpp
duke@435 143 concurrentMarkSweepGeneration.cpp genMarkSweep.hpp
duke@435 144 concurrentMarkSweepGeneration.cpp genOopClosures.inline.hpp
duke@435 145 concurrentMarkSweepGeneration.cpp globals_extension.hpp
duke@435 146 concurrentMarkSweepGeneration.cpp handles.inline.hpp
duke@435 147 concurrentMarkSweepGeneration.cpp isGCActiveMark.hpp
jmasa@1370 148 concurrentMarkSweepGeneration.cpp iterator.hpp
duke@435 149 concurrentMarkSweepGeneration.cpp java.hpp
duke@435 150 concurrentMarkSweepGeneration.cpp jvmtiExport.hpp
duke@435 151 concurrentMarkSweepGeneration.cpp oop.inline.hpp
duke@435 152 concurrentMarkSweepGeneration.cpp parNewGeneration.hpp
duke@435 153 concurrentMarkSweepGeneration.cpp referencePolicy.hpp
duke@435 154 concurrentMarkSweepGeneration.cpp resourceArea.hpp
duke@435 155 concurrentMarkSweepGeneration.cpp runtimeService.hpp
duke@435 156 concurrentMarkSweepGeneration.cpp symbolTable.hpp
duke@435 157 concurrentMarkSweepGeneration.cpp systemDictionary.hpp
duke@435 158 concurrentMarkSweepGeneration.cpp vmCMSOperations.hpp
duke@435 159 concurrentMarkSweepGeneration.cpp vmThread.hpp
duke@435 160
ysr@777 161 concurrentMarkSweepGeneration.hpp bitMap.inline.hpp
duke@435 162 concurrentMarkSweepGeneration.hpp freeBlockDictionary.hpp
duke@435 163 concurrentMarkSweepGeneration.hpp gSpaceCounters.hpp
duke@435 164 concurrentMarkSweepGeneration.hpp gcStats.hpp
duke@435 165 concurrentMarkSweepGeneration.hpp generation.hpp
duke@435 166 concurrentMarkSweepGeneration.hpp generationCounters.hpp
duke@435 167 concurrentMarkSweepGeneration.hpp mutexLocker.hpp
duke@435 168 concurrentMarkSweepGeneration.hpp taskqueue.hpp
duke@435 169 concurrentMarkSweepGeneration.hpp virtualspace.hpp
duke@435 170 concurrentMarkSweepGeneration.hpp yieldingWorkgroup.hpp
duke@435 171
duke@435 172 concurrentMarkSweepGeneration.inline.hpp cmsLockVerifier.hpp
duke@435 173 concurrentMarkSweepGeneration.inline.hpp compactibleFreeListSpace.hpp
duke@435 174 concurrentMarkSweepGeneration.inline.hpp concurrentMarkSweepGeneration.hpp
duke@435 175 concurrentMarkSweepGeneration.inline.hpp concurrentMarkSweepThread.hpp
duke@435 176 concurrentMarkSweepGeneration.inline.hpp defNewGeneration.hpp
duke@435 177 concurrentMarkSweepGeneration.inline.hpp gcUtil.hpp
duke@435 178
duke@435 179 concurrentMarkSweepThread.cpp concurrentMarkSweepGeneration.inline.hpp
duke@435 180 concurrentMarkSweepThread.cpp concurrentMarkSweepThread.hpp
duke@435 181 concurrentMarkSweepThread.cpp genCollectedHeap.hpp
duke@435 182 concurrentMarkSweepThread.cpp init.hpp
duke@435 183 concurrentMarkSweepThread.cpp instanceRefKlass.hpp
duke@435 184 concurrentMarkSweepThread.cpp interfaceSupport.hpp
duke@435 185 concurrentMarkSweepThread.cpp java.hpp
duke@435 186 concurrentMarkSweepThread.cpp javaCalls.hpp
duke@435 187 concurrentMarkSweepThread.cpp mutexLocker.hpp
duke@435 188 concurrentMarkSweepThread.cpp oop.inline.hpp
duke@435 189 concurrentMarkSweepThread.cpp os.hpp
duke@435 190 concurrentMarkSweepThread.cpp systemDictionary.hpp
duke@435 191 concurrentMarkSweepThread.cpp vmThread.hpp
duke@435 192
duke@435 193 concurrentMarkSweepThread.hpp concurrentGCThread.hpp
duke@435 194 concurrentMarkSweepThread.hpp concurrentMarkSweepGeneration.hpp
duke@435 195 concurrentMarkSweepThread.hpp thread_<os_family>.inline.hpp
duke@435 196
duke@435 197 freeBlockDictionary.cpp freeBlockDictionary.hpp
duke@435 198 freeBlockDictionary.cpp thread_<os_family>.inline.hpp
duke@435 199
duke@435 200 freeBlockDictionary.hpp allocation.hpp
duke@435 201 freeBlockDictionary.hpp debug.hpp
coleenp@622 202 freeBlockDictionary.hpp freeChunk.hpp
duke@435 203 freeBlockDictionary.hpp globalDefinitions.hpp
duke@435 204 freeBlockDictionary.hpp memRegion.hpp
duke@435 205 freeBlockDictionary.hpp mutex.hpp
duke@435 206 freeBlockDictionary.hpp ostream.hpp
duke@435 207
duke@435 208 freeChunk.cpp copy.hpp
duke@435 209 freeChunk.cpp freeBlockDictionary.hpp
duke@435 210
coleenp@622 211 freeChunk.hpp allocation.hpp
coleenp@622 212 freeChunk.hpp debug.hpp
coleenp@622 213 freeChunk.hpp globalDefinitions.hpp
coleenp@622 214 freeChunk.hpp markOop.hpp
coleenp@622 215 freeChunk.hpp memRegion.hpp
coleenp@622 216 freeChunk.hpp mutex.hpp
coleenp@622 217 freeChunk.hpp ostream.hpp
coleenp@622 218
duke@435 219 freeList.cpp freeBlockDictionary.hpp
duke@435 220 freeList.cpp freeList.hpp
duke@435 221 freeList.cpp globals.hpp
duke@435 222 freeList.cpp mutex.hpp
duke@435 223 freeList.cpp sharedHeap.hpp
ysr@1580 224 freeList.cpp vmThread.hpp
duke@435 225
duke@435 226 freeList.hpp allocationStats.hpp
duke@435 227
duke@435 228 vmCMSOperations.cpp concurrentMarkSweepGeneration.inline.hpp
duke@435 229 vmCMSOperations.cpp concurrentMarkSweepThread.hpp
duke@435 230 vmCMSOperations.cpp dtrace.hpp
duke@435 231 vmCMSOperations.cpp gcLocker.inline.hpp
duke@435 232 vmCMSOperations.cpp isGCActiveMark.hpp
duke@435 233 vmCMSOperations.cpp interfaceSupport.hpp
duke@435 234 vmCMSOperations.cpp vmCMSOperations.hpp
duke@435 235
duke@435 236 vmCMSOperations.hpp concurrentMarkSweepGeneration.hpp
duke@435 237 vmCMSOperations.hpp gcCause.hpp
duke@435 238 vmCMSOperations.hpp vm_operations.hpp
duke@435 239 vmCMSOperations.hpp vmGCOperations.hpp
duke@435 240
duke@435 241 yieldingWorkgroup.cpp yieldingWorkgroup.hpp
duke@435 242
duke@435 243 yieldingWorkgroup.hpp workgroup.hpp

mercurial