|
Quick Lists
|
|
Bug ID:
|
6724367
|
|
Votes
|
0
|
|
Synopsis
|
par compact could clear less young gen summary data
|
|
Category
|
hotspot:garbage_collector
|
|
Reported Against
|
|
|
Release Fixed
|
hs14(b03)
|
|
State
|
10-Fix Delivered,
request for enhancement
|
|
Priority:
|
3-Medium
|
|
Related Bugs
|
|
|
Submit Date
|
10-JUL-2008
|
|
Description
|
The par compaction summary phase makes two passes over each Space in the GC heap. The first pass updates the data as if each Space were to be compacted completely (i.e., leaving no dead space) into itself. This is used to determine how much data is live in the Space and allows a dense prefix to be computed where applicable (the old gen and the perm gen). The second pass then computes the final destinations. Live data from the young gen Spaces is normally copied to the old gen, assuming it will fit. For young gen spaces that fit into the old gen, certain fields of the summary data must be cleared. More data than necessary is being cleared.
Posted Date : 2008-07-10 02:23:37.0
|
|
Work Around
|
N/A
|
|
Evaluation
|
The problem occurs only for Spaces in the young gen that are non-empty at the start of a full gc. Since -XX:+ScavengeBeforeFullGC is enabled by default, full GCs occur after a scavenge which normally empties eden. So 95% of the time, only To space contains data while Eden and From space are empty.
For each non-empty space in the young gen, the summary phase currently clears data from space->bottom() to space->top() (the top() value before the start of the full gc). However, it is only necessary to clear from space->bottom() to the the "new top" for the space, where "new top" refers to the value computed by the first pass of the summary phase (which computes values to compact the space completely into itself). The "new top" is usually significantly less than space->top(), so less clearing can be done.
Posted Date : 2008-07-10 02:23:37.0
http://hg.openjdk.java.net/jdk7/hotspot-gc/hotspot/rev/2214b226b7f0
Posted Date : 2008-07-12 02:06:25.0
|
|
Comments
|
PLEASE NOTE: JDK6 is formerly known as Project Mustang
|
|
|
 |