.Net:是否可以通过类类型获取先前创建的对象实例?

时间:2010-11-11 22:26:12

标签: .net garbage-collection

是否可以在.net中获取在应用程序中创建的具体类型的所有实例?我想这些信息存储在GC中,但可以从代码中访问吗?

3 个答案:

答案 0 :(得分:1)

不,它通常无法使用。调试/分析API有可能让你得到它(显然只有尚未收集的实例),而不是普通的代码。

答案 1 :(得分:1)

检查Raymond Chen的博客,了解为什么这是一个坏主意(调试除外)。 http://blogs.msdn.com/b/oldnewthing/archive/2010/08/12/10049155.aspx

要实现它,你需要在堆上遍历所有对象,因为CLR不太可能按类型跟踪对象,所以它会非常慢。

答案 2 :(得分:0)

不确定您的方案是什么,但我看不出这些信息何时有用。这个信息的范围也是什么,线程?应用域名?部件?例如,说给我一个app域中所有int对象的列表没有任何意义,是吗?

如果这是针对您创建的某种类型,则可以使用某种工厂类来约束该类型对象的创建。在那里,您可以跟踪为您的给定类型实例化的所有对象。

希望这有帮助。