有没有办法在A行和B行设置某种点,运行一个进程,看看哪个内存已经分配并且没有被释放(或者没有被标记为垃圾收集)?我使用的是C#,VS 2015专业人员,而且探测器似乎只是报告在运行时分配了哪些对象,但我还是看不到哪些对象仍在保留。
我在任务管理器中看到,并非所有内存都按照我的预期被释放,并且想要一个可以告诉我哪些对象正在占用内存的分析器。即使我不能设置A点和B点,我是否有办法至少看到哪些对象在进程终止时已被解除分配(或标记为垃圾回收)?
我愿意使用VS 2015的分析功能或免费/付费分析器。
答案 0 :(得分:0)
快照中由内存分析器获取的所有对象都保留在内存中,此时无法收集。如果在某个执行点获取快照,您可以使用JetBrains dotMemory及其Profiling API(可能是其他分析器也有类似的功能,我只是不知道)。 然后,您可以查看在快照1和2之间分配和未收集的对象。
答案 1 :(得分:-1)
我认为您正在寻找CLR Profiler或类似的内存分析工具(与专注于时间的常见分析器不同)
链接已经过时了,CodePlex的即将关闭可能会被迁移,但它是一个很好的工具。
https://msdn.microsoft.com/en-us/library/ff650691.aspx