Теорія і практика Java Коротка історія розвитку технології утилізації памяті

March 19th, 2009

+


« Java протистоїть новому поколінню динамічних мов   |   Як починалася революція Інтернет частина 2 »


Java, можливо, і є найпоширенішою мовою програмування, заснованою на технології утилізації пам’яті, але у жодному випадку не першим. Утилізація пам’яті була невід’ємною частиною багатьох мов програмування, включаючи Lisp, Smalltalk, Eiffel, Haskell, ML, Scheme і Modula-3 і використовується з початку 1960-х років.
У цьому випуску Теорія і практика Java Брайан Гетц описує найпоширеніші методи збірки сміття.
У найближчі декілька місяців він розгляне стратегії складки сміття, використовувані віртуальною машиною Java 1.4, вплив різних стратегій збірки сміття на продуктивність, а також те, як сприяти (а рівно і як перешкодити) складальникові сміття в досягненні найвищої продуктивності.

Користь від збірки сміття очевидна - підвищується надійність, управління пам’яттю відділяється від дизайну інтерфейсу класу, і розробник витрачає менше часу на відстежування помилок пам’яті.
Добре відомі проблеми з повислими покажчиками і витоками пам’яті просто не зустрічаються в програмах Java (у них зустрічаються один з видів витоку пам’яті, який точніше називається мимовільне запам’ятовування об’єкту, але це дещо інша проблема).
Проте збірка сміття має і свої витрати, серед яких негативний вплив на продуктивність, паузи, складна конфігурація і недетерміноване завершення процедур.

В ідеалі реалізація збірки сміття була б абсолютно непомітною: не було б пауз, центральний процесор не витрачав би час на утилізацію пам’яті, складальник сміття не впливав би негативно на віртуальну пам’ять або кеш, і розмір динамічної пам’яті (heap) не було б потрібно більше, ніж резиденція (заповнення динамічної пам’яті) додатку.
Звичайно, не існує ідеальних складальників сміття, але вони значно покращали за останні десять років.

Можливості і варіанти вибору


Tags: , , , , , ,

Про Java


Схожі записи

Категория: Про Java |

Комментарии