JDK-8058563 : InstanceKlass::_dependencies list isn't cleared from empty nmethodBucket entries
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 8u40,9
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2014-09-16
  • Updated: 2016-04-27
  • Resolved: 2015-10-21
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.
8u101Fixed 9 b93Fixed
Related Reports
Relates :  
Before nmethod is unloaded, all relevant dependencies are removed. But empty nmethodBucket entries are kept. It's a memory leak.
InstanceKlass::clean_dependent_nmethods() does the right job, but it's rarely invoked (only G1KlassCleaningTask::clean_klass() does it).
This is needed to fix this memory leak: 1) Adds calls to delete the dependency entries for all GCs, not only G1. 2) Delete the dependency entries immediately when called from non-GC code.

ILW = MLH = P4 I = M = memory leak L = L = hard to exhaust all memory W = H = no workaround known