【问题标题】:Android exception in dalvikvmdalvikvm中的Android异常
【发布时间】:2011-02-08 18:21:05
【问题描述】:

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

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

发生了什么事?

【问题讨论】:

  • 这是否会导致您的应用出现实际问题?它看起来像内部警告。除非它引起问题,否则我不会担心。
  • 我的应用程序没有问题,但我想知道这是否是由我的应用程序引起的,例如可能会分配过多的内存......

标签: android exception dalvik


【解决方案1】:

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

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

谢谢,

...比尔·布兹比

【讨论】:

  • 注意:问题出现在我所有的手机上:HTC Magic、HTC Desire 和爱可视平板电脑。
  • 如果您有可重复的案例,即始终出现的 APK,请在 b.android.com 上提交错误报告并附上。
【解决方案2】:

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

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

“该消息的目的是帮助 JIT 开发人员确定特定代码模式的出现频率是否足以证明额外的优化工作是合理的。”

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多