Середа ЧАСУ ВИКОНАННЯ ПРОГРАМИ ANDROID

&nbsp

Унікальна архітектура компонентів додатка Android зобовязана своєю появою почасти тому, як в Android реалізується середу многопроцессного виконання Щоб ця середу підходила для великої кількості додатків, одержуваних від багатьох виробників, і мінімальним вимогою для роботи була довіра кожному з виробників, Android задіє кілька примірників віртуальної машини Dalvik, по одному для кожного завдання У розділі «Життєві цикли компонентів» далі і ми досліджуємо, як життєві цикли компонентів дозволяють Android оптимізувати спосіб збірки сміття в купах (невпорядкованих масивах), використовуваних додатками, і як забезпечується виконання стратегії відновлення памяті відразу в декількох купах

В результаті застосування простого і надійного підходу до многопроцессность обробці в Android припадає ефективно ділити память на кілька куп Кожна купа повинна бути відносно невеликий, щоб у памяті одночасно могли уміщатися кілька додатків У кожній купі життєвий цикл компонентів дозволяє компонентам, які в даний момент не використовуються, – особливо неактивних компонентів користувацького інтерфейсу – потрапляти в збірку сміття, коли в купі не вистачає місця, а пізніше знову відновлюватися при необхідності Це, в свою чергу, стимулює створення моделей даних, при якому центральна роль відводиться базі даних У таких моделях більшість даних з визначення залишається в незмінному стані в будь-який час

Віртуальна машина Dalvik

Вживаний в Android підхід до многопроцессность обробці, при якому використовується кілька процесів і кілька примірників віртуальної машини Dalvik, вимагає, щоб кожен екземпляр віртуальної машини ефективно використовував дисковий простір Така ефективність досягається частково за допомогою життєвого циклу компонентів, який дозволяє обєктам спочатку потрапляти в збірку сміття, а потім відновлюватися, а частково за допомогою самої віртуальної машини Android використовує віртуальну машину Dalvik для експлуатації байт-кодовою системи dex, розробленої спеціально для Android Байт-коди dex витрачають дисковий простір приблизно вдвічі економніше, ніж байт-коди Java, що призводить практично до двократного зниження витрат памяті, що витрачаються на роботу класів Java в кожному процесі У системах Android також застосовується память, яка копіює дані при записі, що дозволяє спільно використовувати динамічну память (heap memory) декількох екземплярах одного і того ж виконуваного файлу Dalvik

Зигота: розгалуження нового процесу

Крім того, було б неефективно, якби кожен новий процес завантажував всі необхідні базові класи кожен раз, коли починає роботу новий екземпляр віртуальної машини Оскільки Android поміщає кожне додаток в окремий процес, він може користуватися перевагами базових операцій розгалуження, підтримуваних в операційній системі Linux, на якій заснований Android Таким чином, операційна система може породжувати нові процеси з процесу-шаблону, який знаходиться в оптимальному стані для запуску нового екземпляра віртуальної машини Такий процес-шаблон називається зигота (Zygote) Це примірник віртуальної машини Dalvik У свою чергу, зигота

Dalvik містить набір попередньо завантажених класів, які разом з рештою властивостями стану процесу-зиготи копіюються в копії зиготи, що виникають після розгалуження

Джерело: Android Програмування на Java для нового покоління мобільних пристроїв

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*