Назад к вопросам
Т-Банк
Junior — Middle
65
Можете объяснить, что означает утечка памяти в языке Java и почему она возникает?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Утечка памяти в Java — это ситуация, когда объекты, которые больше не нужны программе, не освобождаются сборщиком мусора, потому что на них всё ещё существуют ссылки. В результате память, занимаемая этими объектами, не освобождается, что может привести к увеличению потребления памяти и, в конечном итоге, к ошибкам OutOfMemoryError.
Причины утечек памяти в Java:
- Долгоживущие ссылки на объекты, которые уже не нужны (например, статические коллекции, в которые добавляются элементы, но не удаляются).
- Внутренние кэши, которые не очищаются.
- Слушатели или коллбэки, которые не отписываются и удерживают объекты.
Пример:
List<byte[]> list = new ArrayList<>();
while(true) {
list.add(new byte[1024 * 1024]); // постоянно добавляем объекты в список
}
В этом примере список постоянно растёт, и объекты не могут быть удалены сборщиком мусора, что приводит к утечке памяти.