提交 a2fd3d1c 编写于 作者: K kevinw

Merge

...@@ -115,11 +115,25 @@ bool VM_GC_HeapInspection::skip_operation() const { ...@@ -115,11 +115,25 @@ bool VM_GC_HeapInspection::skip_operation() const {
void VM_GC_HeapInspection::doit() { void VM_GC_HeapInspection::doit() {
HandleMark hm; HandleMark hm;
CollectedHeap* ch = Universe::heap(); CollectedHeap* ch = Universe::heap();
ch->ensure_parsability(false); // must happen, even if collection does
// not happen (e.g. due to GC_locker)
if (_full_gc) { if (_full_gc) {
ch->collect_as_vm_thread(GCCause::_heap_inspection); // The collection attempt below would be skipped anyway if
} else { // the gc locker is held. The following dump may then be a tad
// make the heap parsable (no need to retire TLABs) // misleading to someone expecting only live objects to show
ch->ensure_parsability(false); // up in the dump (see CR 6944195). Just issue a suitable warning
// in that case and do not attempt to do a collection.
// The latter is a subtle point, because even a failed attempt
// to GC will, in fact, induce one in the future, which we
// probably want to avoid in this case because the GC that we may
// be about to attempt holds value for us only
// if it happens now and not if it happens in the eventual
// future.
if (GC_locker::is_active()) {
warning("GC locker is held; pre-dump GC was skipped");
} else {
ch->collect_as_vm_thread(GCCause::_heap_inspection);
}
} }
HeapInspection::heap_inspection(_out, _need_prologue /* need_prologue */); HeapInspection::heap_inspection(_out, _need_prologue /* need_prologue */);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册