Встречается на собеседованиях • сегодня

Какие знаешь причины утечки памяти

1. **Статические коллекции** - объекты, добавленные в статические коллекции, не удаляются GC, пока коллекция жива. ```java static List cache = new ArrayList<>(); cache.add(new Object()); // Утечка, если не очищать ``` 2. **Незакрытые ресурсы** - `InputStream`, `Connection`, `File` и т.д. ```java try (BufferedReader br = new BufferedReader(new FileReader("file.txt"))) { // Автоматическое закрытие в try-with-resources } ``` 3. **Слушатели событий (Listeners)** - если не удалять слушателей, они держат ссылки на объекты. 4. **Внутренние классы** - нестатические inner-классы хранят ссылку на внешний класс. 5. **ThreadLocal** - если потоки живут долго (например, в пуле), значения в `ThreadLocal` не очищаются. 6. **Кеширование без ограничений** - например, `HashMap` без механизма удаления старых записей. 7. **String.intern()** - строка попадает в пул строк PermGen (до Java 8), что может вызвать его переполнение. **Как избежать:** - Использовать weak/soft ссылки (`WeakHashMap`). - Следить за жизненным циклом объектов. - Профилировать приложение (VisualVM, YourKit).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы