While running specjbb, I encountered this assert in
SharedHeap::fill_region_with_object
assert(word_size == (size_t)oopDesc::header_size(), "Unaligned?");
fill_region_with_object is being called from
PSMarkSweep::absorb_live_data_from_eden
// Fill the unused part of the old gen.
MutableSpace* const old_space = old_gen->object_space();
MemRegion old_gen_unused(old_space->top(), old_space->end());
if (!old_gen_unused.is_empty()) {
SharedHeap::fill_region_with_object(old_gen_unused);
}
We're about to move the boundary between the old and young generations.
We bridge the gap between the old gen top and end (and therefore the
gap between the old gen top and the young gen bottom) with a garbage
object.
If there isn't enough space (2 HeapWords == minimum object size) between
the old gen's top and end, we assert. If we were to weaken the assert,
we'd end up stomping the header word of the first object in the young gen.
In the product vm, we'll do the latter without any notice to the user
and corrupt the heap.
###@###.### 2005-2-04 17:17:28 GMT
SharedHeap::fill_region_with_object
assert(word_size == (size_t)oopDesc::header_size(), "Unaligned?");
fill_region_with_object is being called from
PSMarkSweep::absorb_live_data_from_eden
// Fill the unused part of the old gen.
MutableSpace* const old_space = old_gen->object_space();
MemRegion old_gen_unused(old_space->top(), old_space->end());
if (!old_gen_unused.is_empty()) {
SharedHeap::fill_region_with_object(old_gen_unused);
}
We're about to move the boundary between the old and young generations.
We bridge the gap between the old gen top and end (and therefore the
gap between the old gen top and the young gen bottom) with a garbage
object.
If there isn't enough space (2 HeapWords == minimum object size) between
the old gen's top and end, we assert. If we were to weaken the assert,
we'd end up stomping the header word of the first object in the young gen.
In the product vm, we'll do the latter without any notice to the user
and corrupt the heap.
###@###.### 2005-2-04 17:17:28 GMT
- relates to
-
JDK-6206493 Turn on UseAdaptiveGCBoundary by default
-
- Resolved
-
-
JDK-8242164 Obsolete -XX:UseAdaptiveGCBoundary
-
- Closed
-