Page 278 - 6253
P. 278
Додаток В
Heap і Stack пам'ять в Java.
Модель пам'яті в java
Є два види пам'яті: куча та стек. Куча складається з статичного контексту і
самої кучі. Має дві частини: нова і стара. Нова куча складається з двух частин: Eden
(перша) куча; Survival (виживша) куча.
Eden Space (heap) – в цій області виділяють пам’ять під всі об'єкти, які
створюють в пам'яті програми. Більша частина об'єктів живе не довго (ітератори,
тимчасові об'єкти і т.д.) і знищуються зборщиком мусора цієї паміті без
переміщення в інші. Коли ця пам’ять переповнюється, то minor collection виконує
швидку зборку мусору, це займає мало часу і переміщує застрарілі об'єкти в
наступну область.
Survivor Space (heap) – сюди переміщуються ті об'єкти з попередньої пам'яті,
які пережили хоча б одну зборку мусора. Час від часу довгоживучі обєкти
переміщаються в Tenured (Old) Space.
Tenured (Old) Generation (heap) – тут збираються довгоживучі обєкти
(менеджери ресурсів і т.д.). Коли тут все заповнюється – то виконується повна
зборка мусора.
Permanent Generation (non-heap) – тут зберігається метаінформація, яка
використовується JVM (які класи використовувалися, методи і т.д.).
Java Heap (купа) використовується Java Runtime для виділення пам'яті під
об'єкти і JRE класи.
Створення нового об'єкта також відбувається в купі. Тут працює збирач
сміття: звільняє пам'ять шляхом видалення об'єктів, на які немає жодних посилань.
277