安卓dalvikvm异常

5
当我在手机上启动我的应用程序时,从日志中会收到很多以下错误信息:
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

发生了什么?

这是否在您的应用程序中引起了实际问题?这只是内部警告,除非它引起问题,否则不必担心。 - Cheryl Simon
我的应用程序没有问题,但我在想是否是由于我的应用程序导致了过多的内存分配,例如... - Arutha
2个回答

7
Dalvik JIT使用简单快速的寄存器分配器,通常不知道如何溢出。在这种情况下,JIT在编译跟踪时可能已经用完了所有空闲寄存器,而不是尝试溢出,它放弃了跟踪(在某些情况下,它会将跟踪拆分成两个较小的块并重试)。
这种情况更有可能发生在Armv5te系统上,因为JIT使用16位Thumb指令(限制了有用寄存器的集合)。但是,这不应该是一个常见的问题(它只会导致性能降低-不应该是正确性问题)。如果您经常看到这种情况,请提交一个错误报告。
谢谢, ...Bill Buzbee

注意:这个问题出现在我所有的手机上:HTC Magic、HTC Desire和Archos平板电脑上。 - Arutha
如果您有一个可重复的情况,即一个APK文件,它会一直出现,请在b.android.com上提交错误报告并附加它。 - fadden

1

看起来没有什么可担心的。从Android问题跟踪器上看到: http://code.google.com/p/android/issues/detail?id=18647

“这种情况不应该在实际设备>armv5te上发生,无论如何都代表了一个错过的性能机会,而不是正确性问题。我将把LOGE更改为LOGD。”

“消息的目的是帮助JIT开发人员确定是否经常出现特定的代码模式,以证明额外的优化工作是否有必要。”

“如果它偶尔在旧设备(或模拟器)上发生,则可以安全地忽略。但是,如果您经常看到它,则表示存在问题-可能是配置错误的Dalvik VM构建,或者可能已向系统添加了新代码,使曾经不常见的情况变得普遍。”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接