В стиле управления памятью, обычно используемом на C, информация, которая отслеживает, какие области кучи свободны или распределены, отделена от информации, которая указывает, какие области фактически используются. Если информация о куче больше не нужна, код должен явно отмечать ее как нераспределенную, иначе она может оставаться навсегда.
Система на основе мусора рассматривает все ссылки на кучи-объекты в системе как окончательный индикатор, для которого используются объекты. Поскольку было бы нецелесообразно сканировать все ссылки на объекты в системе каждый раз, когда объект был выделен, система эффективно «разбивает» работу: пока свободное свободное пространство все еще существует в куче, память просто распределяется по объектам последовательно. Не предпринимается никаких попыток восстановить любое пространство до тех пор, пока куча не станет слишком полной.
Объект будет считаться «использованным», если какой-либо поток содержит ссылку на него в локальной переменной или если какая-либо глобальная переменная содержит ссылку на него или если объект, который считается «использованным», содержит ссылку к нему в любой области. Компилятор обычно может сказать, что локальная переменная, содержащая ссылку на объект, никогда не будет использоваться, но не может сделать такие определения с глобальными переменными или полями объектов. Если объект, который будет полезен, содержит ссылку на объект, которая больше никогда не будет использоваться, эта ссылка должна быть установлена в значение null (Nothing в VB). Если это не будет сделано, бесполезный объект будет «сохранен» до тех пор, пока полезный объект будет. Если полезный объект похож на основную форму приложения, результатом может быть утечка памяти, которая сохраняется до тех пор, пока приложение остается открытым.
Одним словом: не надо. –
Определите «проще». У вас есть проблема с сборкой мусора? Можете ли вы описать это в своем вопросе? – spender
В большинстве случаев, не касаясь .NET GC, это правильно. Здесь обсуждается конкретный пример, который может быть полезен: http://blogs.msdn.com/b/ricom/archive/2004/11/29/271829.aspx – gooch