--- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Tue Mar 30 15:43:03 2010 -0400
+++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Thu Apr 15 15:52:55 2010 -0700
@@ -2194,8 +2194,10 @@ public:
assert(o != NULL, "Huh?");
if (!_g1h->is_obj_dead_cond(o, _use_prev_marking)) {
o->oop_iterate(&isLive);
- if (!_hr->obj_allocated_since_prev_marking(o))
- _live_bytes += (o->size() * HeapWordSize);
+ if (!_hr->obj_allocated_since_prev_marking(o)) {
+ size_t obj_size = o->size(); // Make sure we don't overflow
+ _live_bytes += (obj_size * HeapWordSize);
+ }
}
}
size_t live_bytes() { return _live_bytes; }