Android JIT编译原理
2020-06-15 本文已影响0人
珍惜Any
Jit架构:
![](https://img.haomeiwen.com/i12722767/dcdd5017f0916a71.png)
Jit编译流程:
![](https://img.haomeiwen.com/i12722767/7cb37c4b8342741e.png)
分析信息会存储在代码缓存中,并会在内存紧张时作为垃圾被回收。
无法保证在应用处于后台运行状态时所捕获的快照能够包含完整的数据(即 JIT 编译的所有内容)。
该过程不会尝试确保记录所有内容(因为这会影响运行时性能)。
方法可能有三种不同的状态:
已经过解释(dex 代码)
已经过 JIT 编译
已经过 AOT 编译
如果同时存在 JIT 和 AOT 代码(例如,由于反复进行逆优化),经过 JIT 编译的代码将是首选代码。
在不影响前台应用性能的情况下运行 JIT 所需的内存取决于相关应用。大型应用比小型应用需要更多内存。一般来说,大型应用所需的内存稳定维持在 4 MB 左右。
JIT 编译涉及以下活动:
![](https://img.haomeiwen.com/i12722767/a04313098d27fe6f.png)
参考:https://source.android.google.cn/devices/tech/dalvik/jit-compiler