Epsilon GC, також відомий як Безопераційний збирач сміття Java, надає засоби розподілу пам’яті, але не виконує жодного відновлення пам’яті. Epsilon GC не просто запобігає збиранню сміття Java – він усуває GC взагалі. Epsilon GC — це експериментальна функція, випущена з JDK 11.18 березня 2021 р.

Епсилон є безопераційний збирач сміття. JEP 318 пояснює, що «[Epsilon] … обробляє розподіл пам’яті, але не реалізує жодного фактичного механізму відновлення пам’яті. Коли доступна купа Java буде вичерпана, JVM вимкнеться». Отже, це пояснює, чому наша програма припинила роботу з помилкою OutOfMemoryError.

Метод gc(): виклик цього методу є найпоширеніший спосіб запиту на збір сміття в програмі Java. Однак це не гарантує, що збирання сміття відбудеться, оскільки це лише пропозиція для JVM.

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

Який найкращий збирач сміття JVM?

  • Послідовний: однопотоковий GC, простий, але ефективний збирач для невеликого обсягу пам’яті;
  • Паралельний: багатопоточний GC, ідеальний для програм, орієнтованих на пропускну здатність;
  • G1: багатопотоковий GC, створений для хорошого компромісу між затримкою та пропускною здатністю;

G1GC доступний з JDK 7 і розроблений для забезпечення високої пропускної здатності, зберігаючи передбачуваний час паузи, і тепер є стандартним у JDK 17.