e-Commerce Partners Network

пятница, 13 сентября 2013 г.

Android - Нужно ли освобождать память?..

Автор статьи: Сёмкин Сергей
Многие пользователи Android ошибочно считают что нужно постоянно очищать оперативную память от приложений которые висят в фоне.  Считают, что из-за того, что якобы в фоне висят приложения — появляются тормоза и повышенный расход батареи.   Но это всё далеко не так!!!
Начну с того, что многозадачность (работа нескольких приложений в фоне) в Android реализована очень интересным способом. Совсем не так как, например в Windows.
Самое большое заблуждение: “В приложениях Android отсутствует кнопка Закрыть приложение”, то есть приложения просто сворачиваются и соответственно висят в фоне и жрут оперативку.  Таким образом,  приложения в фоне накапливаются и накапливаются, что приводит к тормозам и повышенному расходу батареи.
“Тасккиллеры” (программы для принудительного завершения процесса) спасут нас от этого.  Периодически запускайте такую программу и закрывайте ненужные Вам процессы.”  Если честно, то тому, кто придумал этот бред нужно гвоздь в голову вбить.  Бред!!!
Вместо того, чтобы разобраться как же работает Android начинают писать всякую ерунду.
Напомню, Android это не Windows, здесь все по другому.  Не надо самостоятельно убивать никакие процессы!!!
Об отсутствии кнопки “Закрыть”.  Открою секрет: ”Если для выхода из приложения Вы нажмете кнопку “Home”, то приложение свернется, и будет висеть в фоне пока его не убьёт встроенный тасккиллер, а если нажмете кнопку “Back”, то приложение закроется.”
Одной из особенностей Android является   способность одних приложений использовать компоненты других.  Я не буду Вам сильно дурить голову разными терминами, а постараюсь объяснить на пальцах, возможно даже не очень грамотно но Вы должны понять.
В Android,  процесс и приложение — это абсолютно разные вещи.  То есть одни приложения могут использовать процессы других приложений.  То есть убив какую-нибудь безобидную игру Вы запросто, сами того не зная можете убить какой-нибудь системный процесс, который должен работать в фоне. И приведет это к тому, что этот процесс должен будет заново загрузиться.  Вот именно здесь могут появиться тормоза, или какие-нибудь глюки: отказы будильников, программ и так далее.
При выходе из приложения нажав кнопку  “Home”,  Android сохраняет его состояние на «диск» (точнее сказать в ROM, но не суть дела), и выгружает из оперативной памяти. Когда Вы возвращаетесь к этому приложению, то система загружает его в оперативную память и подгружает сохраненное состояние на момент последнего выхода. То есть нам кажется, что приложение все это время работало в фоновом режиме.
Но есть приложения, которые постоянно висят в фоне, например Skype, Icq, ну и так далее.
Android сам прекрасно управляет своей оперативной памятью!
У Android нехватки операционной памяти,  из-за  якобы висящих в фоне приложений не может быть по определению. Освобождение памяти происходит автоматически с помощью встроенного “Тасккиллера”.  Когда в устройстве заканчивается память, родной “Тасккиллер” сам начнет убивать ненужные процессы и очищать память.
А насчет потребления лишней энергии, приложениями, которые якобы висят в фоне.  Я провел небольшой эксперимент:
Я взял “Samsuns Galaxy S  android 2.2”,  зарядил полностью батарею,  перезагрузил девайс  и начал читать книгу, программой  “Moon+reader”.  Эксперимент длился 90 минут.   Каждые 30 минут я выходил из “Moon+reader” и заново запускал,  при этом записывал остаток уровня заряда батареи. Потом тоже самое проделал ещё раз, но при этом пользовался “Advanced task killer”, то есть каждые 30 минут, после выхода из “Moon+reader” убивал якобы ненужные процессы.  Помимо “Moon+reader” умирало ещё несколько процессов (Facebook,  Twitter, Sms/Mms, Gmail и ещё что-то), ну и конечно фиксировал уровень заряда.
И вот результат: расход при использовании “Advanced task killer” составлял 28%,  а без него 26%. Так что периодически убивая ненужные процессы я немного повысил расход батареи. Выводы делайте сами...
Конечно,  иногда использование  стороннего “Тасккиллера” логично. Такая программа поможет убить действительно ненужный, прожорливый процесс, но не более того.
P.S.
Я думаю, что если бы в системе Android, нужно было бы насильно и руками убивать процессы, то разработчики позаботились бы об этом...


10 комментариев:

  1. Парень мог бы не совсем на пальцах рассказать об этом - так это все гололсловно(все уж продумано, мол, не заморачивайтесь) гугл плей постоянно висит в процессах, зачем? список задач висит в процессах (не писал я никаких задач, пусто там), зачем? И дальше по списку....Лучше бы писал что критично а что нет, для работы системы, какие взаимосвязи программ. Извините, меня не убедило:-)

    ОтветитьУдалить
  2. Автор пишет бред. У меня на телефоне всего 410 мб оперативки. Прошивка Cyanogen mod 9. Сразу после загрузки памяти занято примерно половина. Работать можно. Со временем, если не убивать процессы, памяти сжирается до 70%. При этом начинаются дикие тормоза. Вывод - при малом количестве оперативной памяти таск киллеры жизненно необходимы.

    ОтветитьУдалить
    Ответы
    1. может в 2014 году, попробовать выкинуть аппараты 2000 гола, а купить, ну хотя бы 2012 - тогда и пенять на весь мир не придется!

      Удалить
  3. Да ладно, если все так радужно, то почему все время выскакивает сообщение - не хватает памяти.

    ОтветитьУдалить
    Ответы
    1. наверное потому, что нужно обновить аппарат!
      т.к. современные программы и приложения, требуют гораздо больше ресурсов чем еще год назад!

      Удалить
  4. не согласен котегорически ,с килерами и оптимизаторами работает трое суток , а без них сутки,ночью без оптимизаторов оператива грузилась на 10% а с ними чуть больше одного, разница ощутима не так ли

    ОтветитьУдалить
    Ответы
    1. У вас просто какое то приложение жрет акум. Но легче же убить все процессы, чем найти виновного)))

      Удалить