< prev index next >

src/hotspot/share/gc/parallel/psParallelCompact.hpp

Print this page
rev 57895 : [mq]: 8215297-remove-ptt


  23  */
  24 
  25 #ifndef SHARE_GC_PARALLEL_PSPARALLELCOMPACT_HPP
  26 #define SHARE_GC_PARALLEL_PSPARALLELCOMPACT_HPP
  27 
  28 #include "gc/parallel/mutableSpace.hpp"
  29 #include "gc/parallel/objectStartArray.hpp"
  30 #include "gc/parallel/parMarkBitMap.hpp"
  31 #include "gc/parallel/parallelScavengeHeap.hpp"
  32 #include "gc/shared/collectedHeap.hpp"
  33 #include "gc/shared/collectorCounters.hpp"
  34 #include "oops/oop.hpp"
  35 #include "runtime/atomic.hpp"
  36 #include "runtime/orderAccess.hpp"
  37 
  38 class ParallelScavengeHeap;
  39 class PSAdaptiveSizePolicy;
  40 class PSYoungGen;
  41 class PSOldGen;
  42 class ParCompactionManager;
  43 class ParallelTaskTerminator;
  44 class PSParallelCompact;
  45 class PreGCValues;
  46 class MoveAndUpdateClosure;
  47 class RefProcTaskExecutor;
  48 class ParallelOldTracer;
  49 class STWGCTimer;
  50 
  51 // The SplitInfo class holds the information needed to 'split' a source region
  52 // so that the live data can be copied to two destination *spaces*.  Normally,
  53 // all the live data in a region is copied to a single destination space (e.g.,
  54 // everything live in a region in eden is copied entirely into the old gen).
  55 // However, when the heap is nearly full, all the live data in eden may not fit
  56 // into the old gen.  Copying only some of the regions from eden to old gen
  57 // requires finding a region that does not contain a partial object (i.e., no
  58 // live object crosses the region boundary) somewhere near the last object that
  59 // does fit into the old gen.  Since it's not always possible to find such a
  60 // region, splitting is necessary for predictable behavior.
  61 //
  62 // A region is always split at the end of the partial object.  This avoids
  63 // additional tests when calculating the new location of a pointer, which is a
  64 // very hot code path.  The partial object and everything to its left will be
  65 // copied to another space (call it dest_space_1).  The live data to the right




  23  */
  24 
  25 #ifndef SHARE_GC_PARALLEL_PSPARALLELCOMPACT_HPP
  26 #define SHARE_GC_PARALLEL_PSPARALLELCOMPACT_HPP
  27 
  28 #include "gc/parallel/mutableSpace.hpp"
  29 #include "gc/parallel/objectStartArray.hpp"
  30 #include "gc/parallel/parMarkBitMap.hpp"
  31 #include "gc/parallel/parallelScavengeHeap.hpp"
  32 #include "gc/shared/collectedHeap.hpp"
  33 #include "gc/shared/collectorCounters.hpp"
  34 #include "oops/oop.hpp"
  35 #include "runtime/atomic.hpp"
  36 #include "runtime/orderAccess.hpp"
  37 
  38 class ParallelScavengeHeap;
  39 class PSAdaptiveSizePolicy;
  40 class PSYoungGen;
  41 class PSOldGen;
  42 class ParCompactionManager;

  43 class PSParallelCompact;

  44 class MoveAndUpdateClosure;
  45 class RefProcTaskExecutor;
  46 class ParallelOldTracer;
  47 class STWGCTimer;
  48 
  49 // The SplitInfo class holds the information needed to 'split' a source region
  50 // so that the live data can be copied to two destination *spaces*.  Normally,
  51 // all the live data in a region is copied to a single destination space (e.g.,
  52 // everything live in a region in eden is copied entirely into the old gen).
  53 // However, when the heap is nearly full, all the live data in eden may not fit
  54 // into the old gen.  Copying only some of the regions from eden to old gen
  55 // requires finding a region that does not contain a partial object (i.e., no
  56 // live object crosses the region boundary) somewhere near the last object that
  57 // does fit into the old gen.  Since it's not always possible to find such a
  58 // region, splitting is necessary for predictable behavior.
  59 //
  60 // A region is always split at the end of the partial object.  This avoids
  61 // additional tests when calculating the new location of a pointer, which is a
  62 // very hot code path.  The partial object and everything to its left will be
  63 // copied to another space (call it dest_space_1).  The live data to the right


< prev index next >