Это происходит во встроенной системе, использующей пользовательскую сборку платформы Android 4.0.2. Я вижу, что одно из наших приложений для приложений для Android растет примерно до 400 МБ (rss-размер, когда вызывается «ps») и убивается убийцей Linux OOM. Платформа Android была настроена с максимальным размером кучи, установленным на 62M. Я не знаю, как Dalvik VM позволил деятельности расти до 400 МБ.Линукс из памяти, убивающий мое приложение для Android.
Не должно ли приложение извлекать исключения из памяти Java, когда куча достигает 60 МБ? Мы не видим эти исключения Java в журналах logcat или в трассировках anr.
Мы реализовали выборочную активность, которая последовательно распределяет байтовые массивы и задает каждый байт для фиктивного значения. Мы видим исключения Outofmemory, когда активность распределяется около 60 МБ.
Существуют ли пути выделения в android, которые не учитываются в бюджете кучи? Действие отображает растровые изображения, загруженные с веб-сайта.
Ниже приведены результаты "getprop" на нашей платформе.
$ adb shell getprop | grep -i heap
Я ценю любые указатели.
Благодаря
Отредактировано: Примечание: Ниже выводится пс. Pss и Uss около 316M, что выше.
PID Vss Rss Pss Uss cmdline logcat: hd[0]: pexecd(65): 982 351512K 351316K 326300K 316632K mytest.home^M logcat: hd[0]: pexecd(65): 660 679916K 61044K 57200K 56952K ./videngine^M RAM: 741764K total, 20320K free, 2148K buffers, 80104K cached, 24964K shmem, 10368K slab
Это обычное приложение для Android без каких-либо пользовательских вещей JNI. Я хочу, чтобы JVM выбрала исключения OOM вместо того, чтобы позволить процессу расти до 400 МБ. – videoguy
Возможно, это не обычай (на самом деле я подумал - возможно, ошибочно - это даже не ваше приложение), но что он делает? В коде платформы много JNI. –
Это приложение загружает веб-страницу с помощью элемента управления веб-браузером для Android. Похоже, что механизм Webkit делает много распределений в собственном коде вне кучи Android Java на основе загружаемой страницы. Это объясняет, почему приложение выросло до 300 Мбайт +. – videoguy