JDK-8202842 : G1 footprint regressions in jdk11+10
Type:Bug
Component:hotspot
Sub-Component:gc
Affected Version:11
Priority:P2
Status:Closed
Resolution:Fixed
Submitted:2018-05-09
Updated:2018-08-16
Resolved:2018-05-28
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.
So as suspected the increases happen (mostly) due to
- FromCardCache doubling in size roughly (+2800kb)
- RegionMarkStatsCache data structure (+368kb)
FromCardCache is an issue because we absolutely need to initialize the whole data structure with an "invalid card" marker that it works. This value is -1 at the moment, so we can't use the default-0 initialization of mmapped arrays.
It would however be possible at the expense of some runtime overhead to shift the values stored in the array by +1 (and shift back by -1 when reading) so that the default value would be zero, and we would not need any initialization (and use up memory until actually used).
I think the RegionMarkStatsCache need not be initialized (with zeros) at startup, and could be mmapped if not already done.
In the runs I compared these two data structures make 96% of the difference; attributing the rest (~120kb) to noise due to different runs.