Garbage Collector в Java — кто удаляет ненужные объекты?



В Java не нужно вручную освобождать память после создания объектов. Этим занимается Garbage Collector (GC) — сборщик мусора.

Когда объект больше не доступен из работающего приложения через цепочки ссылок от GC Roots, он становится кандидатом на удаление. Сборщик мусора может освободить занятую им память.

Пример:

public class Main {
public static void main(String[] args) {
String user = new String("Alex");

user = null;

System.gc();
}
}

Что здесь происходит?

1. Создаётся объект `String`.
2. Переменная `user` перестаёт ссылаться на него.
3. Объект становится доступным для сборки мусора, если других ссылок на него нет.
4. `System.gc()` лишь просит JVM рассмотреть возможность запуска GC. Это не гарантирует, что сборка произойдёт немедленно.

Как работает Garbage Collector?

Упрощённо GC определяет, какие объекты ещё достижимы, и освобождает память, занятую недостижимыми объектами. При этом сборка мусора может создавать паузы, поэтому JVM старается управлять ею так, чтобы приложение работало эффективно.

В современных версиях Java доступны разные сборщики мусора, например:

* G1 GC — универсальный сборщик, используемый по умолчанию в большинстве стандартных конфигураций серверной JVM.
* ZGC — ориентирован на очень короткие паузы, в том числе в приложениях с большими объёмами памяти.

💡 Вопрос для начинающих:

Если присвоить переменной `null`, объект сразу удалится из памяти?

Ответ: нет. Он лишь может стать кандидатом на сборку мусора. Когда именно освободится память, решает JVM.
Просмотры: 10
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти