JDK-8058446 : G1 Hot card cache should use ArrayAllocator to allocate the cache array
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 9
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: solaris
  • Submitted: 2014-09-15
  • Updated: 2015-06-03
  • Resolved: 2015-02-20
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.
9 b54Fixed
Related Reports
Relates :  
The hot card cache uses malloc directly to allocate its backing array used for the cache.

In case the hot card cache is set extremely large (2^30 or 2^31) Solaris may not be able to find enough space in its (contiguous) space available for malloc, exiting the VM.

One workaround is to use the ArrayAllocator helper class for these allocations.
This should be implemented along with tests to ensure appropriate handling of G1ConcRSLogCacheSize=0,1,max,max-1,max+1 for all platforms. Adding a test for that before would require special handling on platforms with contiguous space requirements, making the test needlessly complicated.

Noticed using a prototype for the test for JDK-8043766. May either be used as a regtest, or the relevant parts put into a separate test.

ILW: I: high -> VM does not start L: low -> solaris only, needs particular setting of G1ConcRSLogCacheSize W: low -> decrease G1ConcRSLogCacheSize slightly at (very low) performance cost -> P4