C# – 是否可以迭代GC堆?
我不确定以下问题是否有效。为了教育自己,我只是在问。
(1)我可以以编程方式迭代所有代的GC堆吗?
(2)是否可以通过启动线程来观察GC如何对我的组件进行操作?
你的问题的答案是:
-
不幸的是,你不能。 CLR的垃圾收集器以标记,扫描,紧凑模式工作,因此在运行之间没有关于堆的信息(除了堆的大小或特定类型实例的当前生成),这将允许您迭代所有对象它。
-
监视GC的最佳方法是使用
perfmon
并观察(或记录) CLR内存计数器 。
我刚才在网上搜索同一问题的答案,但我没有找到任何方法以编程方式迭代GC堆。
如果您只是需要查看此信息以进行调试,则可以启动WinDbg并加载SOS扩展。 您可以使用!dumpheap extension命令查看GC堆上的确切对象。 如果有的话,你也可以使用dotTrace的内存分析模式。
上述就是C#学习教程:C# – 是否可以迭代GC堆?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1033589.html