ART运行时垃圾收集(GC)过程分析.docx
《ART运行时垃圾收集(GC)过程分析.docx》由会员分享,可在线阅读,更多相关《ART运行时垃圾收集(GC)过程分析.docx(62页珍藏版)》请在第壹文秘上搜索。
1、ART运行时垃圾收集(GC)过程分析ART运行晡与Da1.vik虚拟机一样,都使用了Hark-Sreep算法进行坨圾回收,因此它们的垃圾回收流程在总体上是一段的.但是ART运行时对堆的划分更加细致,因而在此基础上实现了更多样的回收策略。不同的策略有不同的回收力度.力度越大的回收策略,标次回收的内存就越多,并且它们都有各自的使用情景.这样就可以使得每次执行GC时,可以最大限度地减少应用程序停顿.本文就详细分析ART运行时的垃圾收集过程.ART运行时的垃圾也集收集过程如图1所示:图1ART运徊的GC执行就图1的股上面三个箭头描述触发GC的三种情况,左边的滋程图描述非并行GC的执行过程,右边的流程图
2、描述并行GC的执行流程,接下来我们就详细图中涉及到的所有细节.在前面一文中,我们提到了两种可能会触发GC的情况.笫一种情况是没有足够内存分配请求的分存时,会调用HeiiP类的成员函数Co1.ICC1.GarbaKCInIernaI触发一个原因为kGcCausForA1.Ioc的GC。第二种情况卜分配出请求的内存之后,惟料下的内存超过一定的阀值,就会调用I1.e叩类的成员函数RcquestConcurrentGC请求执行一个并行GC.Heap类的成员函数Reiiucs1.Concurren1.GC的实现如下所示:cppviewp1.aincopy在CODE上查看代码片派生到我的代码片voidHe
3、ap:RequestConcurrentGC(Threadtse1.f)(/MakesurethatIsFinishedStarting()!runtime-ISConcurrentGcEnab1.ed()return;)(Mutex1.ockmu(seif.*1.,ocks:runtimo_shutdown_1.ock_);if(runtime-IsShuttingDounO)(return:if1s1.1.andIingStackverf1owO)(return;)/Wea1.readyhavearequestpending,noreasontostartmoreunti1.weux1.a
4、te/COnCUrrcn1._s1.ar1._by1.c$_concurrent_start_bytes_-std:nuneric_1.imits:;JNIEnv*env=Se1.f-XJetJniEnvO:DCHECK(Ie1.IKnownC1.asscs:java_1.anR_Daeiiioris!=NU1.1.);DCHECK(Ie1.IKnownC1.asses:java_1.ang_Dacmons_requestGC!-N1.1.D:env-X;a1.IStaticVoidMethod(We1.IKnownC1.asses:java1.angj)aemons,We1.IKriownC
5、1.asses:java_1.ang_DaeiDons_requestGC);CHECK(!env-ExcetionChcck0):)这个函数定义在文件art/runti11pgcheap.CCe只有满足以下四个条件,HeaP类的成其函数RCQUeSICOnCUITen1.GC才会触发,个并行GG1.ART运行时已经启动完毕.2 .ART运行时支持并行GGART运行时默认是支持并行GC的,但是可以通过启动选项-XgC来关闭。3 .ART运行时不是正在关闭.I.当前我程没有发生栈溢出。上述4个条件都满足之后,Heap类的成员函数RequestConcurrentGC就将成员变盘concurren
6、tstart_bytes的值设SIt为类型size_t的最大值,表示目前正有,个并行GC在等传执行,以阻止触发另外一个并行GC最后Hap类的成员函数RequestConcurrentGC调用JaVa层的java.1.ang.Dneaons类的静态成员函数requestC请求执行次并行(;CJaVa层的java.1.ang.Daomcns类在加教的时帔,会端动五个与堆或者(;C相关的守护线程如下所示:javaviewp1.aincopy在CODE上查石代码片派生到我的代码片pub1.icfina1.c1.assDae三ons(pub1.icstaticvoidstartO(RefcrericeQ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ART 运行 垃圾 收集 GC 过程 分析