为什么用 windbg 看 !address 显示出的Free是128T 大小?
生活随笔
收集整理的這篇文章主要介紹了
为什么用 windbg 看 !address 显示出的Free是128T 大小?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
總是被朋友問,用 !address -summary 顯示出上面的 Free ≈?128T 到底是什么意思?我的空閑內存不可能有這么大,不管怎么說,先上命令。
0:009>?!address?-summary---?Usage?Summary?----------------?RgnCount?-----------?Total?Size?--------?%ofBusy?%ofTotal Free?????????????????????????????????????58?????7ffe`d6410000?(?127.995?TB)??????????100.00% <unknown>????????????????????????????????65????????1`22935000?(???4.540?GB)??97.59%????0.00% MappedFile???????????????????????????????15????????0`031e9000?(??49.910?MB)???1.05%????0.00% Image???????????????????????????????????194????????0`02d03000?(??45.012?MB)???0.94%????0.00% Stack????????????????????????????????????30????????0`00dc0000?(??13.750?MB)???0.29%????0.00% Heap?????????????????????????????????????17????????0`0040d000?(???4.051?MB)???0.09%????0.00% Other?????????????????????????????????????8????????0`001dd000?(???1.863?MB)???0.04%????0.00% TEB??????????????????????????????????????10????????0`00014000?(??80.000?kB)???0.00%????0.00% PEB???????????????????????????????????????1????????0`00001000?(???4.000?kB)???0.00%????0.00%---?Type?Summary?(for?busy)?------?RgnCount?-----------?Total?Size?--------?%ofBusy?%ofTotal MEM_PRIVATE?????????????????????????????124????????1`23b09000?(???4.558?GB)??97.97%????0.00% MEM_MAPPED???????????????????????????????22????????0`033d4000?(??51.828?MB)???1.09%????0.00% MEM_IMAGE???????????????????????????????194????????0`02d03000?(??45.012?MB)???0.94%????0.00%---?State?Summary?----------------?RgnCount?-----------?Total?Size?--------?%ofBusy?%ofTotal MEM_FREE?????????????????????????????????58?????7ffe`d6410000?(?127.995?TB)??????????100.00% MEM_RESERVE??????????????????????????????55????????1`24c09000?(???4.574?GB)??98.32%????0.00% MEM_COMMIT??????????????????????????????285????????0`04fd7000?(??79.840?MB)???1.68%????0.00%---?Protect?Summary?(for?commit)?-?RgnCount?-----------?Total?Size?--------?%ofBusy?%ofTotal PAGE_READONLY???????????????????????????108????????0`02906000?(??41.023?MB)???0.86%????0.00% PAGE_EXECUTE_READ????????????????????????32????????0`020b4000?(??32.703?MB)???0.69%????0.00% PAGE_READWRITE??????????????????????????101????????0`005aa000?(???5.664?MB)???0.12%????0.00% PAGE_WRITECOPY???????????????????????????24????????0`0002b000?(?172.000?kB)???0.00%????0.00% PAGE_EXECUTE_READWRITE???????????????????10????????0`00028000?(?160.000?kB)???0.00%????0.00% PAGE_READWRITE?|?PAGE_GUARD??????????????10????????0`00020000?(?128.000?kB)???0.00%????0.00%---?Largest?Region?by?Usage?-----------?Base?Address?--------?Region?Size?---------- Free??????????????????????????????????????1`40006000?????7ff3`bde7a000?(?127.952?TB) <unknown>??????????????????????????????7ff4`fdf80000????????1`00020000?(???4.000?GB) MappedFile????????????????????????????????0`22fc0000????????0`01a07000?(??26.027?MB) Image??????????????????????????????????7ffc`16c04000????????0`008ca000?(???8.789?MB) Stack?????????????????????????????????????0`006d0000????????0`0017c000?(???1.484?MB) Heap??????????????????????????????????????0`22c3c000????????0`00101000?(???1.004?MB) Other?????????????????????????????????????0`00d50000????????0`00181000?(???1.504?MB) TEB???????????????????????????????????????0`00270000????????0`00002000?(???8.000?kB) PEB???????????????????????????????????????0`0026f000????????0`00001000?(???4.000?kB)從上面輸出看,當前空閑空間是Free=127.995 T ,那這是什么意思呢?這要從 地址總線 說起, CPU 從內存中拿數據需要走 地址總線,1個地址線可以傳遞 1/0 兩個狀態,16根總線就可以同時傳遞16個 1/0 狀態,也就可以擁有 2 的 16 個地址個數,地址范圍是 0x00000000 - 0xffffffff,比如 0x005aa000 就是這范圍中的一個。
有了這個基礎,再回過頭來看下,目前很多的機器,數據總線是 64 根,但地址總線只有 48 根,能表示的地址個數就是 2 的 48次方,也就是 256T,當然這是理論上的最大可尋址空間,而用戶區大概占用一半,也就是 128T,不過這已經足夠覆蓋現如今大家用的 內存條大小 ?了。
總結
以上是生活随笔為你收集整理的为什么用 windbg 看 !address 显示出的Free是128T 大小?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET 7 预览版2 的亮点之 Nat
- 下一篇: 最流行的 .NET 开源项目合集