原文鏈接:
http://m.survivalescaperooms.com/GhostZCH/archive/2012/09/18/2691038.html
C#有自動(dòng)回收內(nèi)存的機(jī)制,但是有時(shí)自動(dòng)回收有一定滯后,需要在變量使用后迅速回收,節(jié)約內(nèi)存,這里介紹一個(gè)最簡(jiǎn)單的方法。
1.先對(duì)對(duì)象賦值 null;
2.System.GC.Collect();
代碼樣例:
class PRogram { static void Main(string[] args) { long lenth = 1024 * 1024 * 128; GetCost("程序啟動(dòng)"); double[] data = new double[lenth]; for (int i = 0; i < lenth; i++) { data[i] = double.MaxValue; } GetCost("數(shù)據(jù)制造完成"); data = null; GetCost("data = null"); System.GC.Collect(); GetCost("System.GC.Collect()"); Console.ReadKey(); } /// <summary> /// 顯示內(nèi)存使用的狀態(tài) /// </summary> /// <param name="state"></param> static void GetCost(string state) { Console.Write("當(dāng)前狀態(tài):" + state + "; 占用內(nèi)存:"); using (var p1 = new PerformanceCounter("Process", "Working Set - Private", "GCtest.vshost")) { Console.WriteLine( (p1.NextValue()/1024/1024).ToString("0.0")+"MB"); } } }運(yùn)行結(jié)果:
不手動(dòng)回收時(shí),系統(tǒng)會(huì)等到程序執(zhí)行結(jié)束時(shí)回收。在使用data=null后表示該數(shù)據(jù)已經(jīng)不再使用,System.GC.Collect();通知系統(tǒng)立即進(jìn)行一次回收操作,根據(jù)C#的內(nèi)存管理原則,不再使用的變量被回收。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注