Since the clean card value for the card table is defined as 0xff, all collectors using card table need to reset its values to that value.
This is an implicit pre-touch of all the memory of the card table, which slows down startup.
The reason why this value has been selected is (apparently) to reduce the barrier code: many architectures have zero-valued registers, so when dirtying (setting to zero) the barrier code does not need to load the dirty card value (0x00) into a register.
Evaluate the costs of changing this, or find another method to avoid touching these cards during startup.
This is an implicit pre-touch of all the memory of the card table, which slows down startup.
The reason why this value has been selected is (apparently) to reduce the barrier code: many architectures have zero-valued registers, so when dirtying (setting to zero) the barrier code does not need to load the dirty card value (0x00) into a register.
Evaluate the costs of changing this, or find another method to avoid touching these cards during startup.
- relates to
-
JDK-8071277 G1: Merge commits and uncommits of contiguous memory
-
- Open
-
-
JDK-8367993 G1: Speed up ConcurrentMark initialization
-
- Open
-
-
JDK-8348270 G1 is slow at startup due to initial heap commits
-
- Closed
-
-
JDK-8359802 JEP 523: Make G1 the Default Garbage Collector in All Environments
-
- Candidate
-