有没有办法为了调试目的而获得所有我的对象所需RAM的列表。子对象等写入到文本文件?C#:一个包含所有子对象的对象需要多少内存?获取对象所需RAM的列表?
我需要得到这些值没有视觉工作室运行在生产模式下运行时。例如每x分钟。这可能吗?我怎样才能做到这一点?
非常感谢你提前,
克里斯
有没有办法为了调试目的而获得所有我的对象所需RAM的列表。子对象等写入到文本文件?C#:一个包含所有子对象的对象需要多少内存?获取对象所需RAM的列表?
我需要得到这些值没有视觉工作室运行在生产模式下运行时。例如每x分钟。这可能吗?我怎样才能做到这一点?
非常感谢你提前,
克里斯
您可以使用JetBrains公司DotTrace做内存分析。它只有30天的试用期,但是通过特定的内存中对象进行导航是一个很好的工具。
您可以创建一个工具,将监视进程的大小。
或者在运行应用程序的单独线程中执行此操作。 Process.GetProcessesByName()...
但我需要每个对象的内存,而不是整个过程。例如,对象a(包含b和c)使用200MB,b使用150MB,c使用50MB。 – Chris 2010-07-26 12:39:15
对于值类型,你应该能够使用sizeof()。尽管如此,我认为不存在对于参考类型的等同物。请注意,您只能在不安全块内使用sizeof()。
负载WinDBG的和负载sos.dll,和附加到进程。
日志然后输出到文件 做!DumpHeap -stat
(和变体)
psscor2.dll可以转储堆到一个XML文件。 (或一个与ClrProfiler使用)
序列化,看看没有。的字节。 – Zaki 2010-07-26 12:40:30
并非所有对象都是可序列化的。 – Chris 2010-07-26 12:41:40
有你看着http://www.microsoft.com/downloads/details.aspx?FamilyId=A362781C-3870-43BE-8926-862B40AA0CD0&displaylang=en,http://memprofiler.com/和http:// WWW。 red-gate.com/products/ants_memory_profiler/index.htm – Zaki 2010-07-26 12:46:51