JDK-8037958 : ConcurrentMark::cleanup leaks BitMaps if VerifyDuringGC is enabled
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 9
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2014-03-20
  • Updated: 2015-01-21
  • Resolved: 2014-03-26
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 8 JDK 9
8u40Fixed 9 b08Fixed
Description
The expected_region_bm and expected_card_bm BitMaps used by VerifyDuringGC are allocated on the c heap on each call to cleanup(). The destructor of BitMap does not free the memory unless free_in_destructor == true is set for the ArrayAllocator backing the BitMap

Suggested fix is to allocate the Bitmaps on the resource area of the VMThread executing the safepoint.
Comments
noreg-hard: The bug materializes as a very slow c-heap memory leak.
02-09-2014

ILW=LHM =>P4 Impact = Low, slow memory leak Likelihood = High, we always leak memory if verification is enabled Workaround = Medium, disable VerifyDuringGC
20-03-2014