源码之fullGC解析
发布时间
阅读量:
阅读量
一.full gc触发的时机
按照国际通用的分析方法,我们首先需要了解full gc的触发条件。对于熟悉笔者先前博客内容的读者而言,这种分析思路应当并不陌生。在研究源码时,找到入口点是关键步骤,而gc算法的入口则直接关联于其触发时机。
实际上,full gc的触发条件主要包括以下几个方面:内存分配失败、对象晋升失败、内存疏散失败、元空间进行垃圾回收以及在调用system.gc时均可能引发full gc。相关的调用关系如下:
//(大对象或内存)申请失败
//年轻代对象晋升老年代的疏散(即回收)失败
//其他原因的疏散(即回收)失败
G1CollectedHeap::mem_allocate
--VM_G1CollectForAllocation::doit()
----G1CollectedHeap::satisfy_failed_allocation()
------G1CollectedHeap::do_collection()
//入参是GC触发原因:
//other = system.gc
//collect_as_vm_thread = metadata_gc
G1CollectedHeap::colle
全部评论 (0)
还没有任何评论哟~
