On Wed, 11 Nov 2020 11:39:59 GMT, Thomas Schatzl <tscha...@openjdk.org> wrote:
> Hi all, > > can I have reviews for this change that changes the way how archive regions > are managed in general and specifically by the G1 collector, fixing the > crashes caused by adding the module graph into the archive in > [JDK-8244778](https://bugs.openjdk.java.net/browse/JDK-8244778)? > > Previously before the JDK-8244778 change, archived objects could always be > assumed as live, and so the G1 collector did so, not caring about the archive > region's contents at all. With JDK-8244778 however, archived objects could > die, and keep stale references to objects outside of the archive regions, > which obviously causes crashes when walking these objects. > > With this change, open archive region contents are basically handled as any > other objects; to support that, all open archive regions are now reachable > via a single object array root. This hopefully also facilitates > implementation in other collectors. > > This allows us to remove quite a bit of special handling in G1 too; the only > difference is that open archive regions will generally not be collected > unless they are completely empty: we do want to profit from the sharing > across VMs as much as possible. > > Testing: tier1-5, one or two 6-8 runs > > The appcds changes were done by @iklam. These changes are described in this > document: > https://wiki.openjdk.java.net/display/HotSpot/CDS+Archived+Heap+Improvements > > Thanks, > Thomas This pull request has now been integrated. Changeset: d3095605 Author: Thomas Schatzl <tscha...@openjdk.org> URL: https://git.openjdk.java.net/jdk/commit/d3095605 Stats: 694 lines in 32 files changed: 464 ins; 110 del; 120 mod 8253081: G1 fails on stale objects in archived module graph in Open Archive regions Change the handling of Open Archive areas, instead of assuming that everything in there is live always, a root containing references to all live root objects is provided. Adapt G1 to handle Open Archive regions as any other old region apart from never compacting or evacuating them. Co-authored-by: Ioi Lam <ik...@openjdk.org> Reviewed-by: kbarrett, sjohanss, redestad ------------- PR: https://git.openjdk.java.net/jdk/pull/1163