src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp

Print this page
rev 5920 : 8035406: Improve data structure for Code Cache remembered sets
Summary: Change the code cache remembered sets data structure from a GrowableArray to a chunked list of nmethods. This makes the data structure more amenable to parallelization, and decreases freeing time.
Reviewed-by:
rev 5921 : 8027295: Free CSet takes ~50% of young pause time
Summary: Improve fast card cache iteration and avoid taking locks when freeing the collection set.
Reviewed-by:
rev 5922 : 8035398: Add card redirty time in "Other" time in G1
Summary: Show the time taken by card redirtying during GC in a new "Redirty Cards" line.
Reviewed-by:


1657   // in the collection set to regions in to-space. In the event
1658   // of an evacuation failure, nmethods that reference objects
1659   // that were not successfully evacuated are not migrated.
1660   void migrate_strong_code_roots();
1661 
1662   // Free up superfluous code root memory.
1663   void purge_code_root_memory();
1664 
1665   // During an initial mark pause, mark all the code roots that
1666   // point into regions *not* in the collection set.
1667   void mark_strong_code_roots(uint worker_id);
1668 
1669   // Rebuild the strong code root lists for each region
1670   // after a full GC.
1671   void rebuild_strong_code_roots();
1672 
1673   // Delete entries for dead interned string and clean up unreferenced symbols
1674   // in symbol table, possibly in parallel.
1675   void unlink_string_and_symbol_table(BoolObjectClosure* is_alive, bool unlink_strings = true, bool unlink_symbols = true);
1676 


1677   // Verification
1678 
1679   // The following is just to alert the verification code
1680   // that a full collection has occurred and that the
1681   // remembered sets are no longer up to date.
1682   bool _full_collection;
1683   void set_full_collection() { _full_collection = true;}
1684   void clear_full_collection() {_full_collection = false;}
1685   bool full_collection() {return _full_collection;}
1686 
1687   // Perform any cleanup actions necessary before allowing a verification.
1688   virtual void prepare_for_verify();
1689 
1690   // Perform verification.
1691 
1692   // vo == UsePrevMarking  -> use "prev" marking information,
1693   // vo == UseNextMarking -> use "next" marking information
1694   // vo == UseMarkWord    -> use the mark word in the object header
1695   //
1696   // NOTE: Only the "prev" marking information is guaranteed to be




1657   // in the collection set to regions in to-space. In the event
1658   // of an evacuation failure, nmethods that reference objects
1659   // that were not successfully evacuated are not migrated.
1660   void migrate_strong_code_roots();
1661 
1662   // Free up superfluous code root memory.
1663   void purge_code_root_memory();
1664 
1665   // During an initial mark pause, mark all the code roots that
1666   // point into regions *not* in the collection set.
1667   void mark_strong_code_roots(uint worker_id);
1668 
1669   // Rebuild the strong code root lists for each region
1670   // after a full GC.
1671   void rebuild_strong_code_roots();
1672 
1673   // Delete entries for dead interned string and clean up unreferenced symbols
1674   // in symbol table, possibly in parallel.
1675   void unlink_string_and_symbol_table(BoolObjectClosure* is_alive, bool unlink_strings = true, bool unlink_symbols = true);
1676 
1677   // Redirty logged cards in the refinement queue.
1678   void redirty_logged_cards();
1679   // Verification
1680 
1681   // The following is just to alert the verification code
1682   // that a full collection has occurred and that the
1683   // remembered sets are no longer up to date.
1684   bool _full_collection;
1685   void set_full_collection() { _full_collection = true;}
1686   void clear_full_collection() {_full_collection = false;}
1687   bool full_collection() {return _full_collection;}
1688 
1689   // Perform any cleanup actions necessary before allowing a verification.
1690   virtual void prepare_for_verify();
1691 
1692   // Perform verification.
1693 
1694   // vo == UsePrevMarking  -> use "prev" marking information,
1695   // vo == UseNextMarking -> use "next" marking information
1696   // vo == UseMarkWord    -> use the mark word in the object header
1697   //
1698   // NOTE: Only the "prev" marking information is guaranteed to be