当我在手机上启动应用程序时,从日志中收到很多以下错误:

E/dalvikvm( 2052): No free temp registers
E/dalvikvm( 2052): Jit: aborting trace compilation, reverting to interpreter
E/dalvikvm( 2052): No free temp registers
E/dalvikvm( 2052): Jit: aborting trace compilation, reverting to interpreter

发生了什么事 ?

最佳答案

Dalvik JIT使用简单且快速的寄存器分配器,并且通常不知道如何溢出。在这种情况下,JIT在编译跟踪时必须已经用完了免费寄存器,并且没有尝试溢出,而是放弃了跟踪(在某些情况下,它将跟踪分成两个较小的块并重试)。

在Armv5te系统上,这种情况更有可能发生,因为JIT使用16位Thumb指令(这限制了有用的寄存器集)。但是,这并不是一个普遍的问题(它只能导致性能降低,而不应该是正确性问题)。如果您经常看到这种情况,请提交错误报告。

谢谢,

...比尔·布兹比(Bill Buzbee)

关于dalvikvm中的Android异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4936758/

10-08 23:52