Назад к вопросам
IT One
Senior
5
Что такое утечка памяти (Memory Leak)?
Компании, где спрашивали
Ответ от нейросети
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) при необходимости
- Следить за жизненным циклом объектов
- Профилировать приложение на предмет использования памяти