提交 e9796434 编写于 作者: T tonyp

6859911: G1: assert(Heap_lock->owner() = NULL, "Should be owned on this thread's behalf")

Summary: The used() method assumes that the heap lock is held when it is called. However, when used() is called from print_on(), this is not the case.
Reviewed-by: ysr, jmasa
上级 5aee7d7c
......@@ -1666,6 +1666,11 @@ size_t G1CollectedHeap::used() const {
return result;
}
size_t G1CollectedHeap::used_unlocked() const {
size_t result = _summary_bytes_used;
return result;
}
class SumUsedClosure: public HeapRegionClosure {
size_t _used;
public:
......@@ -2349,7 +2354,7 @@ void G1CollectedHeap::print_on(outputStream* st) const {
void G1CollectedHeap::print_on(outputStream* st, bool extended) const {
st->print(" %-20s", "garbage-first heap");
st->print(" total " SIZE_FORMAT "K, used " SIZE_FORMAT "K",
capacity()/K, used()/K);
capacity()/K, used_unlocked()/K);
st->print(" [" INTPTR_FORMAT ", " INTPTR_FORMAT ", " INTPTR_FORMAT ")",
_g1_storage.low_boundary(),
_g1_storage.high(),
......
......@@ -700,6 +700,9 @@ public:
size_t g1_reserved_obj_bytes() { return _g1_reserved.byte_size(); }
virtual size_t capacity() const;
virtual size_t used() const;
// This should be called when we're not holding the heap lock. The
// result might be a bit inaccurate.
size_t used_unlocked() const;
size_t recalculate_used() const;
#ifndef PRODUCT
size_t recalculate_used_regions() const;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册