异步类加载和抑制GC具体怎么实现呢
来源:3-10 异步初始化最优解-启动器-2

慕雪6938694
2020-06-09
1.不太理解异步类加载是怎么提高启动时间的呢,它基于什么原理,app启动的时候不是只把要显示的类加载到内存吗?
2.GC机制为什么会对app启动有影响呢,是因为占用CPU资源吗,抑制GC具体是怎么实现呢?
写回答
1回答
-
同学你好。
异步类的加载是说将启动阶段所需要的类提前加载出来,这样使用到的时候就不需要经过类加载的过程了。
做法是在线下 hook classloader 获得类加载的顺序,然后倒序排列,在线上启动App的时候按照倒序的这个顺序触发类的加载
GC 对启动的影响主要是GC 并不是一个简单的轻量的行为而是有代价的,尤其对于 Dalvik虚拟机来说 GC 的影响会更大,还有可能会暂停线程运行。具体的实现可以参考下这篇文章:https://juejin.im/post/5be1077d518825171140dbfa#heading-8 不过不建议大家多加研究,这个方案投入产出比比较低,一方面稳定性问题再者目前的机型 5.0 一下的占比也不高了。
022020-08-09
相似问题