雖然看了一些書,還網(wǎng)絡(luò)上的一些博文,不過(guò)對(duì)CLR托管內(nèi)存細(xì)節(jié)一直比較模糊。而且因?yàn)楣ぷ髟蚩倳?huì)有很多質(zhì)疑,想要親眼看到內(nèi)存里二進(jìn)制數(shù)據(jù)的變化。

所以借助winhex直接查看內(nèi)存以證實(shí)書上的描述或更進(jìn)一步揣摩CLR托管內(nèi)存的運(yùn)作方式,這里寫下來(lái)跟大家一起分享(由于自己這方面知識(shí)儲(chǔ)備不太充足,下面的好多內(nèi)容也是猜測(cè),肯定有很對(duì)錯(cuò)誤,希望了解的網(wǎng)友可以幫忙指正)

 

測(cè)試環(huán)境: windowsXP win10 win7 (dotnet4.0 Releases編譯 ,下文截圖為win7上的運(yùn)行結(jié)果)

內(nèi)存查看工具: winhex 7.5

 

雖然重點(diǎn)是監(jiān)測(cè)二進(jìn)制的內(nèi)存,不過(guò)基本的測(cè)試代碼還是要有的(測(cè)試是直接運(yùn)行編譯好的exe,沒有使用調(diào)試模式,編譯時(shí)要使用Releases,因?yàn)閐ebug跟Releases在GC回收時(shí)對(duì)象是否可達(dá)的判斷是不一樣的)

下面對(duì)內(nèi)存的查找部分看起來(lái)可能有點(diǎn)跳躍,因?yàn)槭墙柚朔磸?fù)測(cè)試得到的規(guī)律,很多過(guò)程沒有贅述

 

進(jìn)行之前需要先簡(jiǎn)單了解CLR對(duì)象分配(類型對(duì)象指針要知道),GC的基本過(guò)程(G0,G1,G2需要簡(jiǎn)單了解),二進(jìn)制數(shù)據(jù)的存儲(chǔ)(主要是大小端)

網(wǎng)友評(píng)論