JDK-8208677 : Move inner metaspace cleaning out of class unloading
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 12
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2018-08-02
  • Updated: 2020-08-19
  • Resolved: 2018-08-08
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 12
12 b07Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Relates :  
Description
Cleaning metadata inside metaspaces from the ClassLoaderData::_deallocate list requires a MetadataOnStackMark walk in a safepoint.  This is currently done during class unloading.  Move this to a safepoint cleanup phase so that class unloading does not require a safepoint (but this still does and always will).
The metaspace cleaning is for redefinition (scratch classes and old metadata attached to scratch classes), already created metadata for classes that have failed loading, constant pools extended due to default method processing, and methods for jsr rewrites.