Приложение Android (с Феликсом) вылетает с превышением емкости LinearAlloc - PullRequest
0 голосов
/ 19 декабря 2011

Я использую Apache Felix и приложение OSGI на Android (3.2).Пока это работает довольно хорошо, но у меня есть довольно большие куски данных для загрузки в приложение (пакеты osgi).Проблема в том, что когда я загружаю самый большой кусок данных, я получаю

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 в 3.2 / 4.x это даже 8 *1024* 1024, но я все же достиг этого предела.Я пытаюсь лучше понять причины этой проблемы и то, как я могу ее исправить.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 20 марта 2012

Это ограничение в Dalvik, вызываемое необычно сложными интерфейсными иерархиями.

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

См. Детали для идей по работе вокруг. Простым ответом может быть попытка использовать разные библиотеки, которые являются менее сложными.

Исправлено объединение в Android AOSP. https://android -review.googlesource.com / # / с / 30900 /

...