src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/gc_implementation/parallelScavenge

src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp

Print this page




 860 // fixed size and typically will contain more than 1 object and may have parts
 861 // of objects at the front and back of the region.
 862 //
 863 // region            -----+---------------------+----------
 864 // objects covered   [ AAA  )[ BBB )[ CCC   )[ DDD     )
 865 //
 866 // The marking phase does a complete marking of all live objects in the heap.
 867 // The marking also compiles the size of the data for all live objects covered
 868 // by the region.  This size includes the part of any live object spanning onto
 869 // the region (part of AAA if it is live) from the front, all live objects
 870 // contained in the region (BBB and/or CCC if they are live), and the part of
 871 // any live objects covered by the region that extends off the region (part of
 872 // DDD if it is live).  The marking phase uses multiple GC threads and marking
 873 // is done in a bit array of type ParMarkBitMap.  The marking of the bit map is
 874 // done atomically as is the accumulation of the size of the live objects
 875 // covered by a region.
 876 //
 877 // The summary phase calculates the total live data to the left of each region
 878 // XXX.  Based on that total and the bottom of the space, it can calculate the
 879 // starting location of the live data in XXX.  The summary phase calculates for
 880 // each region XXX quantites such as
 881 //
 882 //      - the amount of live data at the beginning of a region from an object
 883 //        entering the region.
 884 //      - the location of the first live data on the region
 885 //      - a count of the number of regions receiving live data from XXX.
 886 //
 887 // See ParallelCompactData for precise details.  The summary phase also
 888 // calculates the dense prefix for the compaction.  The dense prefix is a
 889 // portion at the beginning of the space that is not moved.  The objects in the
 890 // dense prefix do need to have their object references updated.  See method
 891 // summarize_dense_prefix().
 892 //
 893 // The summary phase is done using 1 GC thread.
 894 //
 895 // The compaction phase moves objects to their new location and updates all
 896 // references in the object.
 897 //
 898 // A current exception is that objects that cross a region boundary are moved
 899 // but do not have their references updated.  References are not updated because
 900 // it cannot easily be determined if the klass pointer KKK for the object AAA




 860 // fixed size and typically will contain more than 1 object and may have parts
 861 // of objects at the front and back of the region.
 862 //
 863 // region            -----+---------------------+----------
 864 // objects covered   [ AAA  )[ BBB )[ CCC   )[ DDD     )
 865 //
 866 // The marking phase does a complete marking of all live objects in the heap.
 867 // The marking also compiles the size of the data for all live objects covered
 868 // by the region.  This size includes the part of any live object spanning onto
 869 // the region (part of AAA if it is live) from the front, all live objects
 870 // contained in the region (BBB and/or CCC if they are live), and the part of
 871 // any live objects covered by the region that extends off the region (part of
 872 // DDD if it is live).  The marking phase uses multiple GC threads and marking
 873 // is done in a bit array of type ParMarkBitMap.  The marking of the bit map is
 874 // done atomically as is the accumulation of the size of the live objects
 875 // covered by a region.
 876 //
 877 // The summary phase calculates the total live data to the left of each region
 878 // XXX.  Based on that total and the bottom of the space, it can calculate the
 879 // starting location of the live data in XXX.  The summary phase calculates for
 880 // each region XXX quantities such as
 881 //
 882 //      - the amount of live data at the beginning of a region from an object
 883 //        entering the region.
 884 //      - the location of the first live data on the region
 885 //      - a count of the number of regions receiving live data from XXX.
 886 //
 887 // See ParallelCompactData for precise details.  The summary phase also
 888 // calculates the dense prefix for the compaction.  The dense prefix is a
 889 // portion at the beginning of the space that is not moved.  The objects in the
 890 // dense prefix do need to have their object references updated.  See method
 891 // summarize_dense_prefix().
 892 //
 893 // The summary phase is done using 1 GC thread.
 894 //
 895 // The compaction phase moves objects to their new location and updates all
 896 // references in the object.
 897 //
 898 // A current exception is that objects that cross a region boundary are moved
 899 // but do not have their references updated.  References are not updated because
 900 // it cannot easily be determined if the klass pointer KKK for the object AAA


src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File