src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep

Thu, 20 Nov 2008 16:56:09 -0800

author
ysr
date
Thu, 20 Nov 2008 16:56:09 -0800
changeset 888
c96030fff130
parent 791
1ee8caae33af
child 963
37b3ca071522
permissions
-rw-r--r--

6684579: SoftReference processing can be made more efficient
Summary: For current soft-ref clearing policies, we can decide at marking time if a soft-reference will definitely not be cleared, postponing the decision of whether it will definitely be cleared to the final reference processing phase. This can be especially beneficial in the case of concurrent collectors where the marking is usually concurrent but reference processing is usually not.
Reviewed-by: jmasa

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

mercurial