Csharp/C#教程:C# – 是否可以迭代GC堆?分享


C# – 是否可以迭代GC堆?

我不确定以下问题是否有效。为了教育自己,我只是在问。

(1)我可以以编程方式迭代所有代的GC堆吗?

(2)是否可以通过启动线程来观察GC如何对我的组件进行操作?

你的问题的答案是:

  1. 不幸的是,你不能。 CLR的垃圾收集器以标记,扫描,紧凑模式工作,因此在运行之间没有关于堆的信息(除了堆的大小或特定类型实例的当前生成),这将允许您迭代所有对象它。

  2. 监视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

(0)
上一篇 2022年1月18日
下一篇 2022年1月18日

精彩推荐