United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
JDK-8027454 : Do not traverse string table during G1 remark when treating them as strong roots during initial mark

Details
Type:
Enhancement
Submit Date:
2013-10-29
Status:
Resolved
Updated Date:
2014-07-29
Project Name:
JDK
Resolved Date:
2014-01-20
Component:
hotspot
OS:
Sub-Component:
gc
CPU:
Priority:
P3
Resolution:
Fixed
Affected Versions:
hs25,8
Fixed Versions:

Related Reports
Backport:
Backport:
Backport:
Backport:
Backport:
Backport:
Relates:
Relates:

Sub Tasks

Description
During the remark pause G1 traverses the string table, looking for dead oops. This is wasted effort because there cannot be any dead strings currently because:
- the initial mark uses the string table as roots (at the moment unconditionally, later with class unloading conditionally)
- SATB requires that any entries added later than initial mark and before remark must be kept live (and we are not treating them as weak roots anyway).

So there should be no gain looking for dead string table entries at all.

Removing this part of the remark saves ~13% of total remark pause times across a large range of FMW applications.
                                    

Comments
Log files showing remark pause times for FMW sample applications
                                     
2013-10-29
URL:   http://hg.openjdk.java.net/jdk9/hs-gc/hotspot/rev/a2866d45e99e
User:  tschatzl
Date:  2014-01-20 11:46:37 +0000

                                     
2014-01-20
URL:   http://hg.openjdk.java.net/jdk9/jdk9/hotspot/rev/a2866d45e99e
User:  lana
Date:  2014-02-11 20:38:10 +0000

                                     
2014-02-11



Hardware and Software, Engineered to Work Together