Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2220004 | 8 | Tony Printezis | P3 | Resolved | Fixed | b22 |
JDK-2219904 | 7u4 | Tony Printezis | P3 | Closed | Fixed | b07 |
Consider that, during a marking cycle, we might do several evacuation pauses. It's likely that most of the objects that we copy to the survivor spaces would be objects that were allocated after the cycle started (i.e., all the objects copied from the eden to survivors during marking and after the initial-mark pause). But, according to the SATB invariant, we do not actually have to visit objects allocated after the snapshot has been taken. In fact, the only objects the marking phase really needs to visit in the survivor regions during marking are all the objects that were originally located in the survivor regions at the end of the initial-mark pause.
Unfortunately, given that we do not segregate objects in regions according to age, it's not straightforward to keep track of which objects should be explicitly marked and visited by the marking threads and which were allocated during the marking cycle and we should consider them implicitly live.
But, it would be a nice performance improvement to arrange it so that we avoid marking and scanning all survivor objects allocated during the marking cycle. The pause itself would be faster, as no object marking would be necessary and the marking threads would also have less overhead, as they would not have to deal with objects being moved during each GC pause.
- backported by
-
JDK-2220004 G1: avoid explicitly marking and pushing objects in survivor spaces
- Resolved
-
JDK-2219904 G1: avoid explicitly marking and pushing objects in survivor spaces
- Closed
- relates to
-
JDK-6847956 G1: crash in oopDesc*G1ParCopyHelper::copy_to_survivor_space(oopDesc*)
- Resolved
-
JDK-7127697 G1: remove dead code after recent concurrent mark changes
- Resolved
-
JDK-7127700 G1: Replace G1PLAB with PLAB
- Resolved
-
JDK-7127706 G1: re-enable survivors during the initial-mark pause
- Closed
-
JDK-7112743 G1: Reduce overhead of marking closure during evacuation pauses
- Closed
-
JDK-7127707 G1: Checkpoint heap regions at start of concurrent marking to ignore heap expansions
- Closed