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

use*_*677 5 c# multithreading garbage-collection

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

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

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

And*_*are 7

你的问题的答案是:

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

  2. 监视GC的最佳方法是使用perfmon和查看(或记录)CLR内存计数器.