586 size_t _inc_cset_bytes_used_before; |
586 size_t _inc_cset_bytes_used_before; |
587 |
587 |
588 // Used to record the highest end of heap region in collection set |
588 // Used to record the highest end of heap region in collection set |
589 HeapWord* _inc_cset_max_finger; |
589 HeapWord* _inc_cset_max_finger; |
590 |
590 |
591 // The RSet lengths recorded for regions in the collection set |
591 // The RSet lengths recorded for regions in the CSet. It is updated |
592 // (updated by the periodic sampling of the regions in the |
592 // by the thread that adds a new region to the CSet. We assume that |
593 // young list/collection set). |
593 // only one thread can be allocating a new CSet region (currently, |
|
594 // it does so after taking the Heap_lock) hence no need to |
|
595 // synchronize updates to this field. |
594 size_t _inc_cset_recorded_rs_lengths; |
596 size_t _inc_cset_recorded_rs_lengths; |
595 |
597 |
596 // The predicted elapsed time it will take to collect the regions |
598 // A concurrent refinement thread periodcially samples the young |
597 // in the collection set (updated by the periodic sampling of the |
599 // region RSets and needs to update _inc_cset_recorded_rs_lengths as |
598 // regions in the young list/collection set). |
600 // the RSets grow. Instead of having to syncronize updates to that |
|
601 // field we accumulate them in this field and add it to |
|
602 // _inc_cset_recorded_rs_lengths_diffs at the start of a GC. |
|
603 ssize_t _inc_cset_recorded_rs_lengths_diffs; |
|
604 |
|
605 // The predicted elapsed time it will take to collect the regions in |
|
606 // the CSet. This is updated by the thread that adds a new region to |
|
607 // the CSet. See the comment for _inc_cset_recorded_rs_lengths about |
|
608 // MT-safety assumptions. |
599 double _inc_cset_predicted_elapsed_time_ms; |
609 double _inc_cset_predicted_elapsed_time_ms; |
|
610 |
|
611 // See the comment for _inc_cset_recorded_rs_lengths_diffs. |
|
612 double _inc_cset_predicted_elapsed_time_ms_diffs; |
600 |
613 |
601 // Stash a pointer to the g1 heap. |
614 // Stash a pointer to the g1 heap. |
602 G1CollectedHeap* _g1; |
615 G1CollectedHeap* _g1; |
603 |
616 |
604 // The ratio of gc time to elapsed time, computed over recent pauses. |
617 // The ratio of gc time to elapsed time, computed over recent pauses. |
892 HeapRegion* inc_set_tail() { return _inc_cset_tail; } |
905 HeapRegion* inc_set_tail() { return _inc_cset_tail; } |
893 |
906 |
894 // Initialize incremental collection set info. |
907 // Initialize incremental collection set info. |
895 void start_incremental_cset_building(); |
908 void start_incremental_cset_building(); |
896 |
909 |
|
910 // Perform any final calculations on the incremental CSet fields |
|
911 // before we can use them. |
|
912 void finalize_incremental_cset_building(); |
|
913 |
897 void clear_incremental_cset() { |
914 void clear_incremental_cset() { |
898 _inc_cset_head = NULL; |
915 _inc_cset_head = NULL; |
899 _inc_cset_tail = NULL; |
916 _inc_cset_tail = NULL; |
900 } |
917 } |
901 |
918 |
902 // Stop adding regions to the incremental collection set |
919 // Stop adding regions to the incremental collection set |
903 void stop_incremental_cset_building() { _inc_cset_build_state = Inactive; } |
920 void stop_incremental_cset_building() { _inc_cset_build_state = Inactive; } |
904 |
921 |
905 // Add/remove information about hr to the aggregated information |
922 // Add information about hr to the aggregated information for the |
906 // for the incrementally built collection set. |
923 // incrementally built collection set. |
907 void add_to_incremental_cset_info(HeapRegion* hr, size_t rs_length); |
924 void add_to_incremental_cset_info(HeapRegion* hr, size_t rs_length); |
908 void remove_from_incremental_cset_info(HeapRegion* hr); |
|
909 |
925 |
910 // Update information about hr in the aggregated information for |
926 // Update information about hr in the aggregated information for |
911 // the incrementally built collection set. |
927 // the incrementally built collection set. |
912 void update_incremental_cset_info(HeapRegion* hr, size_t new_rs_length); |
928 void update_incremental_cset_info(HeapRegion* hr, size_t new_rs_length); |
913 |
929 |