Я отлаживал свое приложение и проверял распределение памяти и наткнулся, что я думаю, на любопытную вещь.Часто задают вопрос, как лучше всего управлять памятью и т. Д., Мой вопрос: какова самая низкая граница памяти по умолчанию в простом приложении?Поэтому я пошел и создал простой проект hello world для API уровня 8 (2.2), в котором просто написано Hello World.
Затем я посмотрел DDMS на вкладке Heap.Выделено было 2 318 МБ, 510 КБ бесплатно (использовано 82%).Поэтому я подумал, почему он использует 82% разрешенной (?) Кучи в простом тесте Hello World.Копая глубже, я сделал кучу дампов и пробежал через MAT в затмении.В качестве первого примера я посмотрел на dominator_tree (все объекты отсортированы по размеру), вот что я нашел:
TrustManagerImpl (176.616 Retained Heap) - 9,83% - я думаю, это важнодля обеспечения безопасности
com.ibm.icu4jni.util.Resources $ DefaultTimeZones (165.432 Сохраненная куча) - 9,21% - ПОЧЕМУ?Я посмотрел на его содержание, и это один массив String с 561 членом, каждый из которых является информацией о часовом поясе?Мне это не нужно, правда?И это занимает 10% кучи.
android.text.Html $ HtmlParser (126.592 Reserved Heap) - 7,05% - я полагаю, это HTML-анализатор для моего TextView с Hello World,Опять же почему?Я не разбираю HTML, так почему же Парсер там?На самом деле HTMLSchema - это то, что занимает 99,9% объекта.
Существует больше, но менее значимое, как я вижу (что может быть неправильно).У кого-нибудь есть мысли по поводу 3 случаев, которые я упомянул выше?Я имею в виду, я скучаю по интерпретации чего-то здесь?Я не думаю, что использование памяти должно быть таким высоким.Вопрос, который напрашивается сам собой, если у каждого приложения есть этот базовый уровень, как он масштабируется?Наверное, не очень хорошо?Должно ли это быть исправлено, и, следовательно, привести к улучшению управления памятью в Android?Я запустил это на HTC Desire 2.2.
Alex