對象的大小在內存
回答
對於值類型,使用sizeof(object value)
對於非託管對象使用Marshal.SizeOf(object obj)
遺憾的是上述兩種不會得到你所引用對象的大小。
對於管理對象:有沒有直接的辦法讓RAM的大小,他們使用的管理對象,請參見:http://blogs.msdn.com/cbrumme/archive/2003/04/15/51326.aspx
或替代方案:
System.GC.GetTotalMemory
long StopBytes = 0;
foo myFoo;
long StartBytes = System.GC.GetTotalMemory(true);
myFoo = new foo();
StopBytes = System.GC.GetTotalMemory(true);
GC.KeepAlive(myFoo); // This ensure a reference to object keeps object in memory
MessageBox.Show("Size is " + ((long)(StopBytes - StartBytes)).ToString());
來源:http://blogs.msdn.com/b/mab/archive/2006/04/24/582666.aspx
Profiler
使用探查器將是最好的。
似乎結果總是0上嘗試這種代碼時列表
注意:如果'new foo()'分配了其他的東西,這會給出不準確的結果,有時候是這樣。 – 2017-01-29 22:31:28
您可以使用CLR Profiler看到分配大小爲每種類型的(不特定對象)。也有一些商業產品,可以幫助您監視program.JetBrains內存dotTrace和展鵬Ants的使用是一些他們。
- 1. AS3:優化對象內存大小
- 2. 在PHP中獲取對象的內存大小?
- 3. 如何在內存中獲取對象大小?
- 4. 由sos.dll和內存中進程大小返回的對象大小不匹配
- 5. 估算memcached內Java對象的大小
- 6. 內存大小
- 7. 調整閃存對象的大小
- 8. SDWebImage緩存對象的大小
- 9. 內存對齊和結構的大小
- 10. JProfiler的內存視圖 - >對象大小
- 11. 散列或其他對象的內存大小?
- 12. 估計/計算內存中對象大小的好方法
- 13. 在磁盤上存儲大量不同大小的對象
- 14. 在大對象堆內存中預分配一些內存
- 15. .NET內存大小
- 16. 內存表大小
- 17. Sqlserver內存大小
- 18. 內存大小UIImageView
- 19. Java'Date'對象大小
- 20. JavaScript - 對象大小
- 21. 內存對齊到結構中 - 對齊大小等於最大成員大小
- 22. 允許的內存大小
- 23. 允許的內存大小
- 24. 允許的內存大小
- 25. Go中對象的大小
- 26. java.awt.Color對象的大小
- 27. Java對象的大小
- 28. 對象的大小序列
- 29. 在堆上分配的內存大小
- 30. 字段在內存中的NULL大小
使用[memory profiler](http://stackoverflow.com/search?q=%5Bc%23%5D+memory+profiler)。 – dtb 2012-02-17 07:24:34
已經有許多愚蠢。發帖前請先搜索。 [如何在內存中獲取對象大小?](http://stackoverflow.com/questions/605621/how-to-get-object-size-in-memory)。而且還http://stackoverflow.com/questions/426396/how-much-memory-does-a-c-net-object-use。還http://www.google.com/#hl=zh-CN&sclient=psy-ab&q=.net+size+of+object+in+memory&pbx=1&oq=.net+size+of+object+in+memory&aq=f&aqi = G1&AQL = 1&gs_sm = 3&gs_upl = 987l6327l0l6549l29l20l0l9l9l5l2247l4909l9.7.0.3.9-1l29l0&BAV = on.2,or.r_gc.r_pw.r_qf。,cf.osb&FP = f0b85e3c6de8b9f9&BIW = 1440&波黑= 795 – 2012-02-17 07:31:20