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
|