外观
如何理解JIT、AOT 与类加载?
标准回答
解释执行、JIT和AOT影响代码何时被编译及执行成本,ART会结合版本与profile策略使用不同方式。启动还可能发生类解析、验证、静态初始化和相关I/O;即便方法已编译,也不代表业务依赖和类初始化没有成本。
类的静态初始化具有同步语义,一个线程初始化时,其他依赖该初始化的线程可能等待;把重量级代码放进静态块会使调用点难以预测。若初始化失败,还会影响后续类使用。
比较启动时固定安装方式、编译状态和构建类型。不能把开发机已跑很多次的热代码状态与另一台首次运行的状态直接比较。
追问与回答
为什么第一次点某个功能特别慢
候选包括类首次使用、动态库加载、资源解码、磁盘缓存未命中和首次GPU资源准备。应逐段测量,不直接归因JIT。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q056