RFR: 8218974: Free GC native structures in nmethod::flush

Erik Österlund erik.osterlund at oracle.com
Thu Feb 14 11:55:39 UTC 2019


Hi,

An nmethod goes from being is_alive() to being !is_alive() and 
eventually being freed in nmethod::flush. Native structures for nmethods 
are freed in nmethod::flush when we free the nmethod. Except for a few 
things, including GC data. This enhancement proposes to fix that to make 
the life cycle of nmethods and their native data more intuitive.

In particular ZGC has per-nmethod data. The data is removed when 
unlinking nmethods, as opposed to when they are deleted. This is a bit 
awkward and makes things more difficult than they need to be. This patch 
adds a new CollectedHeap::flush_nmethod() function. In there ZGC deletes 
its attached GC data.

Bug:
https://bugs.openjdk.java.net/browse/JDK-8218974

Webrev:
http://cr.openjdk.java.net/~eosterlund/8218974/webrev.00/

Thanks,
/Erik


More information about the hotspot-gc-dev mailing list