Android应用程序(使用felix)因LinearAlloc超出容量而崩溃

时间:2011-12-19 14:00:11

标签: android osgi dalvik apache-felix

我在android(3.2)上运行apache felix和osgi app。到目前为止,这种方法效果很好,但是我有相当大的数据块要加载到应用程序中(osgi bundle)。问题是,当我加载最大的数据块时,我得到了

  

LinearAlloc超出容量

错误似乎来自

LinearAlloc.c

\#define DEFAULT_MAX_LENGTH  (4*1024*1024)

 if (nextOffset > pHdr->mapLength) {
    /*
     * We don't have to abort here.  We could fall back on the system
     * malloc(), and have our "free" call figure out what to do.  Only
     * works if the users of these functions actually free everything
     * they allocate.
     */
    LOGE("LinearAlloc exceeded capacity, last=%d\n", (int) size);
    dvmAbort();
}

afaik in 3.2 / 4.x它甚至是8 ​​ 1024 * 1024,但我仍然达到了这个极限。我希望能够更好地了解导致此问题的原因以及我可能如何解决这个问题。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是Dalvik在异常复杂的界面层次结构中触发的限制。

http://code.google.com/p/android/issues/detail?id=22586

详细了解有关解决方法的建议。简单的答案可能是尝试使用不太复杂的不同库。

修复程序已合并到Android AOSP中。 https://android-review.googlesource.com/#/c/30900/