请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

异步类加载和抑制GC具体怎么实现呢

1.不太理解异步类加载是怎么提高启动时间的呢,它基于什么原理,app启动的时候不是只把要显示的类加载到内存吗?
2.GC机制为什么会对app启动有影响呢,是因为占用CPU资源吗,抑制GC具体是怎么实现呢?

正在回答

1回答

同学你好。

  1. 异步类的加载是说将启动阶段所需要的类提前加载出来,这样使用到的时候就不需要经过类加载的过程了。

    1. 做法是在线下 hook classloader 获得类加载的顺序,然后倒序排列,在线上启动App的时候按照倒序的这个顺序触发类的加载

  2. GC 对启动的影响主要是GC 并不是一个简单的轻量的行为而是有代价的,尤其对于 Dalvik虚拟机来说 GC 的影响会更大,还有可能会暂停线程运行。具体的实现可以参考下这篇文章:https://juejin.im/post/5be1077d518825171140dbfa#heading-8 不过不建议大家多加研究,这个方案投入产出比比较低,一方面稳定性问题再者目前的机型 5.0 一下的占比也不高了。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕雪6938694 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-06-23 16:24:16
  • 老师您好,异步预加载类有具体的实现文档嘛?另外问下,如果启动页和首页有ABtest,加载的类可能不一样,那我们本地如何获取预加载类的集合呢
    回复 有任何疑惑可以回复我~ 2020-08-09 18:06:56
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信