JDK-8154580 : Save mirror in interpreter frame to enable cleanups of CLDClosure
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2016-04-19
  • Updated: 2016-08-04
  • Resolved: 2016-04-25
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 9
9 b120Fixed
Related Reports
Relates :  
Relates :  
Description
The CLDClosure was created to walk the Method's ClassLoaderData in the interpreter frame so that the Method metadata is not reclaimed if no other references to the Method's class loader are alive.  The design for permgen elimination was that the class holder (class_loader or mirror) oop is stored with any metadata references so that the GC can simply follow oops in the normal way and not follow metadata.  This was an exception to the design.

This is the alternate fix to bug JDK-8003720 to save the mirror in the frame where the Method* is saved.  GC walks the mirror in the frame, keeping Method* alive.   This change enables other cleanups envisioned for the special CLDClosure.