Android чрезмерные глобальные ссылки - PullRequest
2 голосов
/ 20 сентября 2010

Я иногда отключаю глобальный эталонный предел jni для эмулятора Android.Я пытаюсь сохранить около 2000 слов вместе с определениями в моем приложении, и оно терпит неудачу в любом из двух мест: если я использую DOM для анализа файла xml со всеми этими ссылками, это терпит неудачу, когда DOM вытягивает дерево в память.Если я использую SAX, он не работает, когда я добираюсь до 2000-го элемента.

У кого-нибудь есть ссылка на то, как я могу отключить проверку (я понимаю, что она не существует на реальных машинах, и я пытаюсь сохранить 2000 небольших объектов в памяти)?Если нет, есть ли хороший способ отладить это?Объекты, которые накапливаются, представляют собой строки:

09-20 16:24:00.278: WARN/dalvikvm(625):  1879 of Ljava/lang/String; 28B (1877 unique)

Я попытался запустить avd с -nojni и с помощью adb установить dalvik.vm.checkjni

C:\android-sdk-windows\tools>adb shell getprop dalvik.vm.checkjni
false

Хотя logcat показывает "CheckJNI выключен ", он все еще умирает с ограничением globalref 2001.

Кроме того, после секции синтаксического анализа память возвращается, как я вижу:

09-20 16:31:23.238: DEBUG/dalvikvm(654): GC_EXPLICIT freed 1157 objects / 48208 bytes in 147ms
09-20 16:31:23.258: DEBUG/dalvikvm(654): GREF has decreased to 1799
09-20 16:31:23.278: DEBUG/dalvikvm(654): GREF has decreased to 1699
09-20 16:31:23.287: DEBUG/dalvikvm(654): GREF has decreased to 1599
09-20 16:31:23.309: DEBUG/dalvikvm(654): GREF has decreased to 1499
09-20 16:31:23.328: DEBUG/dalvikvm(654): GREF has decreased to 1399
09-20 16:31:23.338: DEBUG/dalvikvm(654): GREF has decreased to 1299
09-20 16:31:23.367: DEBUG/dalvikvm(654): GREF has decreased to 1199
09-20 16:31:23.367: DEBUG/dalvikvm(654): GREF has decreased to 1099
09-20 16:31:23.398: DEBUG/dalvikvm(654): GREF has decreased to 999
09-20 16:31:23.398: DEBUG/dalvikvm(654): GREF has decreased to 899
09-20 16:31:23.408: DEBUG/dalvikvm(654): GREF has decreased to 799
09-20 16:31:23.418: DEBUG/dalvikvm(654): GREF has decreased to 699
09-20 16:31:23.418: DEBUG/dalvikvm(654): GREF has decreased to 599
09-20 16:31:23.437: DEBUG/dalvikvm(654): GREF has decreased to 499
09-20 16:31:23.447: DEBUG/dalvikvm(654): GREF has decreased to 399
09-20 16:31:23.447: DEBUG/dalvikvm(654): GREF has decreased to 299
09-20 16:31:23.469: DEBUG/dalvikvm(654): GREF has decreased to 199

Так что я неНе думаю, что это моя хэш-карта, содержащая объекты слова, которая на самом деле является проблемой.Единственная идея, которую я оставил, - это разрезать xml-файл на кратные, но это может показаться нелегким решением.

Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 17 ноября 2010

это ошибка в наших XML-парсерах на основе экспатов (как SAX, так и pull): http://code.google.com/p/android/issues/detail?id=12595

0 голосов
/ 21 сентября 2010

Несмотря на то, что он немного медленнее, чем sax, чрезмерные глобальные ссылки исчезают при использовании XML Pull Parser.

...