c# 把list清空和賦值null對內存釋放的區別


一般看法:list=null;能更快的釋放內存,
list.Clear();只是清空了內容 在內存上它還是占有空間,而=null 就是不占用內存空間

大佬看法:=null還沒有立刻把內存清掉,要調用GC.Collect();才會清掉內存,
Clear方法和=null差不多,也不會馬上把內存清掉,直到GC.Collect()調用為止(如果你不調用的話系統會在適當的時機調用)。不過調用list.Clear();會減輕GC.Collect方法的負擔,使其能更快完成清除內存的工作

不用了,就設置為null,如果還要new一個使用,那不如Clear了繼續用得好。因此單獨比較內存釋放是沒有意義的,要看具體場合用具體的功能。
另外在局部變量時,離開作用域自動釋放,相當於賦值null,因此一般很少有人會特意使用這個null的。

所以如果元素很多,做法通常是這樣的:
list.Clear();
list=null;
GC.Collect();
但GC.Collect();通常會消耗很多時間,所以如果數組元素不多的情況沒必要直接調用GC.Collect,讓系統在它感到不適的時候自動調用GC.Collect為好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM