March 19th, 2009
« Java протистоїть новому поколінню динамічних мов |
Як починалася революція Інтернет частина 2 »
Копіюючий алгоритм має прекрасні робочі характеристики, але його основним недоліком є потреба в об’ємі пам’яті більшому в два рази, чим об’єм, необхідний для маркирующе-зачищаючого складальника сміття. Алгоритм маркіровки-стиснення поєднує маркіровку-зачистку і копіювання таким чином, що ця проблема зникає за рахунок того, що процес збірки сміття ускладнюється.
Як і маркіровка-зачистка, маркіровка-стиснення складається з двох фаз. У фазі маркіровки кожен об’єкт, що діє, розглядається і маркірується. Потім маркіровані об’єкти копіюються таким чином, що всі об’єкти, що діють, ущільнюються в самому низу динамічної пам’яті.
Якщо повне стиснення здійснюється при кожній збірці сміття, отримана в результаті динамічна пам’ять така ж як і результат роботи копіюючого складальника - між активною частиною динамічної пам’яті і вільною існує чітка межа, так що витрати на розміщення порівнянні з витратами при використанні копіюючого складальника сміття.
Довгоживучі об’єкти мають тенденцію накопичуватися в самому низу динамічної пам’яті, тому вони не копіюються циклічно, як при використанні копіюючого складальника сміття.
Отже, якій вибрати?
Добре, який же з цих підходів використовується в інструментальному пакеті JDK для збірки сміття? У якомусь сенсі все з них. У попередніх пакетах JDK використовувався однопотоковий маркирующе-зачищаючий або маркирующе-зачищающе-стискаючий складальник.
У JDK 1.2 і пізніших версіях застосовується змішаний підхід, який називається збірка сміття по поколіннях , при якій динамічна пам’ять ділиться на декілька шарів відповідно до віку об’єктів, і різні покоління обробляються окремо з використанням різних алгоритмів утилізації пам’яті.
Pages: 1 2 3 4 5 6 7 8 9 10 11
Tags:
збірка,
обєкт,
память,
посилання,
програма,
складальник,
сміття
Схожі записи
- Історія створення і основні терміни (23.03.2009)
...
До здивування Нотона, його лист здобув успіх: воно було розіслане всім провідним інженерам Sun Microsystems, які не забарилися відгукнутися і висловити гарячу підтримку своєму колезі і схвалення його поглядів на ситуацію в Sun Microsystems.
Звернення викликало схвалення і у вищого керівництва компанії, а саме, у Білл Джоя (Bill Joy), засновника Sun Microsystems, і Джеймса Гослінга (James ...
- Програмування на мові Java Утиліти (02.03.2009)
...
Вони використовуються для роботи з наборів об'єктів, взаємодії з системними функціями низького рівня, для роботи з математичними функціями, генерації випадкових чисел і маніпуляцій з датами і часом.
Прості оболонки для типів.
Як ви вже знаєте, Java використовує вбудовані примітивні типи даних, наприклад, int і char ради забезпечення високої продуктивності. Ці типи даних не ...
- Java (24.02.2009)
... Перевірки вимагають 39 правок.
Перейти до: навігація, пошук
Java - об'єктно-орієнтована мова програмування, що розробляється компанією Sun Microsystems і офіційно випущений 23 травня 1995 року. Відносно вимови в російській мові, як і у ряді інших, утворилися дві різні норми - англомовна /TdytTvn/[1] і традиційно-національна («Ява»), відповідна традіционому вимові назви ...
- Програмування на мові Java авторський (13.04.2009)
... Java Enterprise Course
• Огляд технологій Java EE
• Рівень презентації
• Рівень бізнес компонентів
• Рівень доступу до даним
• Сервіси системного рівня
• WEB сервіси
• Шаблони проектування Enterprise додатків
Ознайомитися з докладною програмою курсу Ви можете, звернувшись в корпоративний відділ при «Комп'ютерній Академії «КРОК»:
(057) 752-05-03, 8067 518 80 96
...
- Програмування на мові Java Робота з рядками (04.03.2009)
... У них при необхідності передається адреса послідовності байтів, вміст яких трактується як символи до тих пір, поки не буде зустрінутий нульовий байт, що відзначає кінець рядка.
У пакет java.lang вбудований клас, що інкапсулює структуру даних, відповідну рядку. Цей клас, званий String, не що інше, як об'єктне представлення незмінного символьного масиву. У цьому класі є методи, ...
Категория:
Про Java |
Комментарии