雖然看了一些書,還網(wǎng)絡(luò)上的一些博文,不過對CLR托管內(nèi)存細節(jié)一直比較模糊。而且因為工作原因總會有很多質(zhì)疑,想要親眼看到內(nèi)存里二進制數(shù)據(jù)的變化。
所以借助winhex直接查看內(nèi)存以證實書上的描述或更進一步揣摩CLR托管內(nèi)存的運作方式,這里寫下來跟大家一起分享(由于自己這方面知識儲備不太充足,下面的好多內(nèi)容也是猜測,肯定有很對錯誤,希望了解的網(wǎng)友可以幫忙指正)
測試環(huán)境: windowsXP win10 win7 (dotnet4.0 Releases編譯 ,下文截圖為win7上的運行結(jié)果)
內(nèi)存查看工具: winhex 7.5
雖然重點是監(jiān)測二進制的內(nèi)存,不過基本的測試代碼還是要有的(測試是直接運行編譯好的exe,沒有使用調(diào)試模式,編譯時要使用Releases,因為debug跟Releases在GC回收時對象是否可達的判斷是不一樣的)
下面對內(nèi)存的查找部分看起來可能有點跳躍,因為是借助了反復(fù)測試得到的規(guī)律,很多過程沒有贅述
進行之前需要先簡單了解CLR對象分配(類型對象指針要知道),GC的基本過程(G0,G1,G2需要簡單了解),二進制數(shù)據(jù)的存儲(主要是大小端)