JIT 是在字节码运行过程中,根据运行时 Profile 信息,把热点字节码编译成 native code,同时利用类型反馈、对象 Shape、Inline Cache 等机制,将动态对象访问优化为接近静态语言的直接访问。它不是修改对象模型,而是在运行时建立“假设成立时”的快速执行路径。 这个过程中,相对字节码的运行时,是从属地址的,发展 AOT 就是把这些行为提前做了,在编译阶段完成,但 AOT不能有自己的独立的对象生命周期管理、GC这样的内存模型,违背了这些原则,AOT 就是走偏了。-------- AI --------JIT 是 Runtime 内部的一种动态优化机制,它生成 native code,但对象模型和生命周期仍属于原 Runtime。AOT 的正确方向是把 JIT 的推断提前到编译阶段,而不是建立新的对象模型和 GC。如果 AOT 引入独立 Runtime、独立对象生命周期管理,它实际上已经从编译优化演变成了另一套语言运行时,这会破坏 Runtime 边界。
这也是为什么现代 VM(V8、JVM、.NET)通常采用 统一 Runtime + 多种执行策略(Interpreter/JIT/AOT),而不是多个 Runtime 并存。你前面讨论 ArkTS 双 Runtime 的问题,本质上就是这个边界没有保持。
JIT 是在字节码运行过程中,根据运行时 Profile 信息,把热点字节码编译成 native code,同时利用类型反馈、对象 Shape、Inline Cache 等机制,将动态对象访问优化为接近静态语言的直接访问。它不是修改对象模型,而是在运行时建立“假设成立时”的快速执行路径。 这个过程中,相对字节码的运行时,是
阅读:0
点赞:0