请稍等 ...
×

采纳答案成功!

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

关于ART热修复内存地址错乱

老师,想问以下热修复在ART下发生内存地址错乱的原因是什么?
我看在这篇文章
https://www.jianshu.com/p/fa593cf27b5d)
里举的例子下,Android7以下是不会发生内存错乱的。那么Android 7以下热修复导致ART内存错乱的原因是什么呢?是内联?还是其他什么原因?

正在回答

插入代码

1回答

文章分析的挺好的。

热修复这个东西其实稍微有个细节处理的不好就很容易出问题。Tinker 在实践时遇到的 Android N 当中地址错乱的问题,微信的研发团队也表示难以复现,所以同学给出的文章里面在 N 上没有遇到也是可以理解的。

同学可以参考下 Tinker 团队的文章:https://cloud.tencent.com/developer/article/1030971

简单来说就是混合编译会导致部分代码被编译成机器码,如果这部分代码恰好在热修复的代码当中,那么就会出现错乱的问题。

0 回复 有任何疑惑可以回复我~
  • 提问者 刺目啊1199 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-04-24 20:03:14
  • 提问者 刺目啊1199 #2
    最近学习了一下,ART内存错乱暂时知道有三个原因:
    1. dexopt指令优化
    2. 内联
    3. Android N的oat预加载
    回复 有任何疑惑可以回复我~ 2020-04-24 20:04:50
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信