سلام.
در موارد بسیار نادری که شناخت کاملی نسبت به شی غیرمدیریت شده (unmanaged object) خود دارید می تونید از متد Collect برای باز پس گیری حافظه استفاده کنید ولی نکات زیر رو در نظر بگیرید :
در حالت کلی اشیایی که استفاده می کنید در دو دسته managed resourse و unmanaged resourse قرار میگیرن.
اشیا مدیریت شده مثل انواع داده ها مثل int و string و ... که این اشیا توسط CLR مدیریت میشن. برای این اشیا، gorbage collector (GC بصورت کاملا مستقل و خودکار عمل بازپس گیری حافظه رو انجام میده. مثلا زمانیکه یک متغیر int تعریف می کنید و حافظه ای به این متغیر تخصیص داده میشه، نیازی نیست شما دستوری رو برای باز پس گیری حافظه این متغیر انجام بدید.
تمرکز شما فقط باید بر روی اشیای unmanaged resource باشه منظور از unmanaged resource هر شی ای هست که gorbage collector اطلاعاتی درباره این شی نداره و قاعدتا نمیتونه رفتار مطمئنی در بازپس گیری منابع از این اشیا داشته باشه. مثلا زمانیکه میخواید از کلاس filestream برای کار با فایل ها استفاده کنید چون این کلاس از windows API برای باز کردن فایل استفاده میکنه و بخاطر نداشتن اطلاعات GC از این موارد نمیتونه بازپس گیری حافظه رو بصورت معمول انجام بده. یا مثلا یک کانکشن یک resorce هستش که به خودش حافظه اختصاص میده و البته توسط CLR قابلیت مدیریت شدن رو نداره. با توجه به اینکه کار با GC بسیار حساس هست توصیه میشه که شی مورد نظر رو dispoce کنید تا GC بتونه حافظه رو از این شی در زمان مناسب پس بگیره. راه دیگه استفاده از using statement هست . using تضمین میکنه که شی unmanage شما بعد از اتمام کارش، dispoce بشه.
using ( SqlConnection con = new SqlConnection() )
{
دستورات مورد نظرتون
}
یا در مورد filestream :
using ( FileStream fs = new FileStream() )
{
....
}
در پایان بلاک دستورات تضمین میشه که شی مورد نظر dispose بشه تا GC بتونه با اون بعنوان یک شی بدون مصرف برخورد کنه و حافظه رو از اون پس بگیره.
مایکروسافت توصیه میکنه که شما تا حد امکان از استفاده مستقیم از ()GC.Collect اجتناب کنید چراکه زمانیکه از این متد استفاده می کنید، متد collect تمام تردهای برنامه رو که در حال اجرا هستن به زور متوقف میکنه و همین امر احتمال بروز خطا رو ایجاد میکنه.
برای درک بهتر می تونید این موارد رو هم مطالعه بفرمایید :
http://msdn.microsoft.com/en-us/library/s5zscb2d%28v=vs.85%29.aspx
http://stackoverflow.com/questions/16646969/unmanaged-resources-and-dispose