Также имейте в виду, что .NET имеет две кучи, одна из которых является кучей больших объектов. Я полагаю, что в эту кучу помещаются объекты размером примерно 85 КБ или больше. Эта куча имеет другие правила жизни, чем обычная куча.
Если вы создаете большие структуры памяти (словарь или список), было бы разумно поискать точные правила.
Что касается восстановления памяти при завершении процесса, если только вы не используете Win98 или ее эквивалент, все возвращается к ОС после завершения. Единственными исключениями являются вещи, которые открыты кросс-процессами, а у другого процесса ресурс все еще открыт.
COM-объекты могут быть сложными, хотя. Если вы всегда используете шаблон IDispose
, вы будете в безопасности. Но я столкнулся с несколькими сборками взаимодействия, которые реализуют IDispose
. Ключевым моментом здесь является вызов Marshal.ReleaseCOMObject
, когда вы закончите с этим. COM-объекты все еще используют стандартный подсчет ссылок COM.