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

Может ли произойти утечка памяти в C#

Да, утечка памяти возможна даже в управляемом языке, таком как C#. Основные причины: 1. **События (event)**: Подписка на события без отписки может удерживать объекты в памяти. ```csharp // Плохо: event EventHandler SomethingHappened; obj.SomethingHappened += HandlerMethod; // Не забыть -= ! // Лучше использовать WeakEvent или отписываться ``` 2. **Статические коллекции**: Объекты в них никогда не освобождаются. ```csharp static List _cache = new List(); _cache.Add(new object()); // Утечка! ``` 3. **Неуправляемые ресурсы**: IDisposable объекты без using/dispose. ```csharp var stream = new FileStream(...); // Без using/Dispose() ``` 4. **Циклические ссылки**: GC справляется с ними, но если есть корневые ссылки - утечка. **Как избежать**: - Использовать Memory Profiler (например, dotMemory) - Следить за подписками на события - Очищать кеши/коллекции - Реализовывать IDisposable для неуправляемых ресурсов
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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