JDK-8146987 : Improve Parallel GC Full GC by caching results of live_words_in_range()
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2016-01-13
  • Updated: 2018-06-21
  • Resolved: 2016-01-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.

To download the current JDK release, click here.
JDK 9
9 b107Fixed
Related Reports
Relates :  
Description
The change addresses an inefficiency in the live_words_in_range() routine in ParallelScavenge Full GC, which generally costs most of the time during the compacting phase.

The idea records last query information of live_words_in_range as well as the query result. The approach reuses last query result so that can reduce much computation of bitmap searching.

Manual testing of full GC intensive applications including JOlden, Dacapo, SPECjvm2008 benchmarks.
Results show that our enhancement can reduce much full GC time by 20~50%, depending on application scenarios.

Contributed by ray alex <sky1young@gmail.com>
Mailing list thread start: http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2015-December/015899.html
Comments
Attached patch that measures the branch decisions taken in live_words_in_range(), and a graph showing the distribution for a SPECjbb2015 run with constant IR. The numbers in the label (1, 2, 4, 5) correspond to array indices of the _vals array used in the patch.
15-01-2016

Can reproduce improvements in Full GC time, although not as large as claimed in the original contribution.
13-01-2016

Shepherding this.
13-01-2016