.Net之美读书笔记17
生活随笔
收集整理的這篇文章主要介紹了
.Net之美读书笔记17
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
.Net垃圾回收
垃圾回收:指的是CLR對托管堆的垃圾內存進行回收,由CLR自動處理,這里簡單說下垃圾回收的機制。
引用類型的內存分布
我們知道引用對象分配在托管堆上,我們新建一個Person對象來分析下新建的過程。
回收的垃圾
有了引用對象的理解,我們在理解要回收的垃圾是什么?
- 要回收的垃圾:棧上不存在變量指向的托管堆對象,在進行垃圾回收時回收
- 什么時候發生垃圾回收: 當托管堆(Heap)的空間不足時或應用程序關閉時
怎樣回收: 將垃圾對象托管堆內存收回,并將非垃圾對象內存壓縮(避免內存碎片化)
析構函數與IDisposable模式
上面所說的垃圾回收都是發生在托管堆Heap上的,那么非托管資源怎么回收呀?抱歉這個這個只有自己代碼回收(像C++那樣)。這種情況一般出現在引用的類庫對象中涉及非托管資源(如:數據庫處理對象SqlConnection或流處理對象Stream),其實類庫也給提供了具體的回收方法,在回收時調用。
析構函數
析構函數就是為處理垃圾回收時對非托管資源的釋放問題?GC在進行垃圾回收時,如果實例存在析構函數,會先執行析構函數然后再垃圾回收。
IDisposable模式
有時對象使用完,就需要將所關聯資源文件釋放掉,這里引出了IDisposable模式 ,實現IDisposable接口
//會調用對象的Dispose()方法釋放資源using (Person p = new Person()){p.Study();}轉載于:https://www.cnblogs.com/LoveTomato/p/8136127.html
總結
以上是生活随笔為你收集整理的.Net之美读书笔记17的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Safair css hack
- 下一篇: 【转载】从头编写 asp.net cor