我在運行時有一個靜態對象,基本上是其他對象(整數,字符串,字典,其他對象等)的列表。有沒有辦法在運行時確定我的靜態「其他對象列表」對象所使用的內存?這對於儀器和報告目的會很方便。.NET運行時對象的內存佔用情況如何?
6
A
回答
2
你可能會問的東西,你可以從你的代碼(這是我想太多知道)打電話,但我覺得我應該提到螞蟻的情況下,別人探查[http://www.red-gate.com/Products/ants_profiler/index.htm]是不是在找具體的東西。它會告訴你關於你的代碼的所有信息,包括正在使用多少內存。
從他們的網站...
檔案存儲,瞭解您 應用程序如何使用內存,並找到 內存泄漏。該內存分析器 可以讓你在你的 程序的執行任何 點拍攝快照,所以你可以看到什麼樣的內存是在這一點上使用 。您可以在不同時間拍攝 多個快照 而您的應用程序正在運行,所以 您可以比較應用程序內存 的狀態。
3
的sizeof可以在值類型中使用也有Marshal.SizeOf可與一些提示用於.NET:
不過...。那是不完全的總因爲運行時確實爲同步塊等事物分配了額外的字節。
如果你在衡量這種類型的東西很感興趣,但是,你應該使用分析API:
http://msdn.microsoft.com/en-us/library/ms404386.aspx
或者像的WinDbg,可以做各種美妙的事情一個免費的工具。
1
不是沒有探查器。僅僅爲了一個班而已經很難 - 參見here。
2
0
感謝您的回覆。我認爲我最初的攻擊計劃,因爲我相信大多數對象都是可序列化的,將會是這樣的:
using (MemoryStream memstream = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
try
{
formatter.Serialize(memstream, myObjectOfObjects);
mem_footprint += memstream.Length;
}
catch
{
// not a serializable object
}
}
相關問題
- 1. 比較.Net和VB6應用程序的內存佔用情況
- 2. 如何查找iOS/Cocoa中集合對象的內存佔用情況
- 3. NSDictionary和NSArray的內存佔用情況
- 4. windows上的內存佔用情況
- 5. 對象的內存使用情況
- 6. 確定.NET中對象圖的內存使用情況
- 7. 內存佔用情況分析
- 8. 應用程序轉到背景時的內存佔用情況
- 9. 如何檢查Hadoop中Map任務的內存佔用情況
- 10. 如何計算對象的內存使用情況?
- 11. 如何測量JavaScript對象的內存使用情況
- 12. 如何測量python中對象的內存使用情況?
- 13. 如何快速檢查ASP.NET內存佔用情況?
- 14. Solaris上運行時進程的當前內存使用情況
- 15. 限制.Net CLR內存使用情況
- 16. .NET模塊內存使用情況
- 17. Grails - 啓動內存/內存使用情況/域對象
- 18. 如何在不分配內存的情況下測量.net應用程序的內存使用情況?
- 19. 如何在不分配內存的情況下構造對象?
- 20. 如何在運行時監視shell腳本的內存使用情況?
- 21. 在運行時動態確定內存使用情況
- 22. 計算Java中任何對象的總內存使用情況
- 23. C#.NET內存泄漏:GC階段#1和階段#2運行時的鋸齒內存使用情況
- 24. 未明確未設置時的緩存對象的內存使用情況
- 25. 標準Wurfl緩存怎麼樣 - 查看內存佔用情況
- 26. 如何在運行時確定一個C++對象的內存
- 27. 如何找出我的linux應用程序的內存佔用情況?
- 28. 如何知道當對象有一些動態分配內存時對象佔用的所有內存?
- 29. ff對象佔用全部內存?
- 30. 如何評估rails應用程序中redis鍵值的內存佔用情況?
我確實在尋找一個編程實現。但我同意螞蟻探查器可以在正確的情況下得心應手:) – Bullines 2008-10-21 20:38:55