GarbageCollector, Утилизация или статические методы? - PullRequest
2 голосов
/ 18 ноября 2009

Я разработал несколько классов в прошлом месяце. Они растут большими (около 30-40 методов каждого класса).

Я никогда не задумывался об утечках памяти, GarbageColletor или о чем-то в этом роде (должен сказать, что это мой первый большой проект).

Теперь у меня есть классы с методами, 15 классов вокруг, каждый класс мин. 20 методов. 50% - это Linq-классы в DAL, 50% - BusinessClasses с BusinessLogic. NO Class использует глобальные переменные (нет необходимости), поэтому теоретически я могу сделать их статическими классами + методы. На данный момент это не так, я инициализирую объект класса и использую класс, а не избавляюсь от него.

С чего мне начать, когда я злюсь на утечки памяти и т. Д., Когда система работает ~ 100 пользователей?

Ответы [ 2 ]

3 голосов
/ 18 ноября 2009

Не беспокойтесь о методах ваших классов, так как они не потребляют память: каждый метод существует только один раз, в определении класса. Что действительно занимает память, так это данные, содержащиеся в объектах в виде полей.

Насчет удаления объектов (я полагаю, здесь .NET) не требуется, если вы не используете неуправляемые ресурсы. Сборщик мусора позаботится об освобождении всех управляемых ресурсов (то есть простых объектов с их данными) при необходимости.

Если вам нужна дополнительная информация о сборщике мусора .NET и о том, как бороться с утечками памяти, вы можете, например, посмотреть здесь: http://www.codeproject.com/KB/dotnet/Memory_Leak_Detection.aspx. Но если вы находитесь в начале вашего проекта, я бы сконцентрировался на получить четкий и понятный дизайн, а не вопросы управления памятью.

1 голос
/ 18 ноября 2009

Возможность создания класса static зависит не от использования «глобальных» переменных, а от того, использует ли класс поля экземпляра (переменные-члены класса). Если ваши методы не используют данные экземпляра, они могут быть статическими (и для этого есть небольшое предпочтение). Если все методы являются статическими, вы также можете сделать класс статическим.

...