PDA

View Full Version : آزاد کردن فضای اختصاص داده شده به یک آرایه



smt1383
جمعه 27 فروردین 1389, 09:14 صبح
با سلام خدمت دوستان
من مطالبی را درباره مدیریت حافظه در سی شارپ خواندم اما هنوز متوجه نشدم که چگونه فضای اختصاص داده شده به یک آرایه را می توان آزاد کرد. فرض من در برنامه ام یک آرایه بزرگ به نام myarray از نوع int دارم. می خواهم بعد از اینکه کارم با myarray تمام شد حافظه اختصاص داده شده به آن را آزاد کنم. با توجه به اینکه برای حافظه ها دستور Dispose() وجود ندارد چگونه باید این حافظه را آزاد کرد؟ (با توجه به اینکه این آرایه در سطح form1 به صورت global است تا پایان برنامه حافظه آن توسط GC پاک نمی شود) ممنون می شوم اگر دوستان راهنمایی کنند.

FastCode
جمعه 27 فروردین 1389, 09:47 صبح
//decalaration
Array array = new byte[1 << 20];
WeakReference wr = new WeakReference(array);
//somewhere else
if (!wr.IsAlive) GC.Collect(GC.GetGeneration(wr));

smt1383
جمعه 27 فروردین 1389, 11:27 صبح
ممنون. میشه درباره کلاس WeakRefrence یه توضیح مختصر بدید. آیا با اجرای این دستورات بلافاصله حافظه اختصاص داده شده به آرایه آزاد می شود یا هر وقت GC اجرا شد این حافظه آزاد می شود؟