Автор: denxxlab 29.3.2011, 22:18
Этот мануал посвящен оптимизации и настройке Android OS для её лучшей работы с памятью. Сторонние программы "таск-киллеры" здесь не рассматриваются.
Все операции, представленные здесь, Вы выполняете на свой страх и риск, автор статьи не несет никакой ответственности за любой ущерб, причиненный вашему девайсу.
http://etenclub.ru - Сайт источник!
- Каков принцип работы автоматического менеджера памяти и процессов?
Android выполнен на ядре линукса и поэтому использует его функции для работы с памятью. Существует 2 ключевых момента, связанных с этим:- По настоящему, память никогда не бывает свободна. Большую часть памяти занимает кэш файлов, создаваемый для ускорения операционной системы. Кэш никак не мешает программам, например, если программе понадобится память, то она сотрет кэш и будет использовать высвобожденную память. Чем больше памяти на Android девайсе свободно, тем больше кэша будет создано и тем быстрее будет работать операционная система.
- Если память уменьшится до определенного порога, то включится "киллер приложений", который будет пытаться закрыть ненужные процессы, дабы высвободить память.
Нас интересует, только последний пункт B.
В Android OS все приложения делятся на 6 типов: - FOREGROUND_APP
- VISIBLE_APP
- SECONDARY_SERVER
- HIDDEN_APP
- CONTENT_PROVIDER
- EMPTY_APP
В операционной системе имеется файл:
/sys/module/lowmemorykiller/parameters/minfree
он создается при каждой загрузке операционной системы, с помощью:
/system/etc/init.d/99complete
Данный файл можно изменить во время работы системы, но после перезагрузки он снова будет иметь все значения по умолчанию.
В этом файле прописан порог при котором соответствующий тип приложения будет закрываться. Все цифры хранятся в страницах (1 страница = 4 килобайта). Для удобства эти цифры я буду указывать в мегабайтах.
В операционной системе Android, по умолчанию стоят следующие цифры: 6, 8, 16, 20, 22, 24 Mb (для 256Mb оперативной памяти).
Первые две цифры трогать нет необходимости, мы же не хотим, чтобы закрывались приложения, которые используются в данный момент. Поэтому, будем изменять последние 4 цифры. Самая главная из них - третья цифра, т.к. она определяет количество свободной памяти. Самые оптимальные настройки: 6, 8, 24, 26, 28, 30 (это для 256 Mb оперативной памяти, для 512 можно выставить и побольше, но я не могу этого проверить). Но Вы можете поэкспериментировать сами.
Вы спросите как же установить нужные нам значения?
Выхода два: либо менять 99complete, либо использовать программы http://etenclub.ru/board/index.php?act=attach&type=&id=11010 или http://etenclub.ru/board/index.php?act=attach&type=&id=11011. Эти программы после загрузки изменяют содержимое minfree. Для обеих программ нужны root-права!
http://etenclub.ru - Сайт источник!
- Изменяем VM Heap Size
VM Heap Size — размер кучи виртуальной машины. Оптимальным значением считается - 32Mb, но можно смело экспериментировать. Меняется в файле /system/build.prop параметр dalvik.vm.heapsize (Есть программа http://etenclub.ru/board/index.php?act=attach&type=&id=11009, позволяющая изменять этот параметр).
http://etenclub.ru - Сайт источник!
- Как избавится от перезагрузок хоумскрина?
Если обмануть менеджер памяти, сказав ему, что хоумскрин относится к FOREGROUND_APP, то выгружать его система не будет (ну, если конечно Вы совсем не исчерпаете память).
Для этого обмана нужно добавить строчку ro.HOME_APP_ADJ=0 в файл /data/local.prop (на сайте xda говорят, что если эта строчка в конце, то нужно добавить еще пустую строку, иначе она пропадает).
http://etenclub.ru - Сайт источник!
- И не забудьте про JIT!
Хотя он и кушает память, но с включенным JIT программы работают гораздо быстрее.
http://etenclub.ru - Сайт источник!
Заключение.Выполнив все эти советы, работа на моем Acer Liquid стала более приятной. И что радует, многозадачность совсем не пострадала. На мой взгляд, на сегодняшний день это самый лучший способ оптимизации работы памяти, ИМХО.