Sobes.tech
Назад к вопросам
Senior
5

Что такое утечка памяти (Memory Leak)?

Компании, где спрашивали
IT OneIT One

Ответ от нейросети

sobes.tech AI

Утечка памяти (Memory Leak) — ситуация, когда программа продолжает занимать память, которая больше не нужна и не используется, но не освобождается.

В Java утечка памяти может возникать, если объекты остаются достижимыми (например, через ссылки в коллекциях), хотя они уже не нужны, и сборщик мусора не может их удалить. Это приводит к постепенному росту потребления памяти и может вызвать OutOfMemoryError.

Пример утечки:

List<byte[]> cache = new ArrayList<>();

void addData() {
    byte[] data = new byte[1024 * 1024]; // 1MB
    cache.add(data); // объекты остаются в списке и не удаляются
}

Если метод addData вызывается много раз, память будет расти, так как объекты не удаляются.

Для предотвращения утечек важно:

  • Удалять ненужные ссылки
  • Использовать слабые ссылки (WeakReference) при необходимости
  • Следить за жизненным циклом объектов
  • Профилировать приложение на предмет использования памяти