自定义属性没有收集垃圾?

时间:2010-12-10 09:14:54

标签: c# wpf memory-management attributes garbage-collection

在我的WPF应用程序中,我们有各种自定义控件,这些控件中的依赖项属性使用各种属性,如SortOrderMaxLength等;这些属性值在PropertyGrid控件中用于标识特定属性的排序顺序等。

使用ANTS探查器我发现这些属性对象始终保留在内存中,即使原始自定义控件不再在内存中。 Profiler会显示这些属性的保留图 - http://weblogs.asp.net/blogs/akjoshi/CustomAttributeRetentionGraph.png

alt text

我不确定为什么会发生这种情况?

1 个答案:

答案 0 :(得分:2)

Attribute与类型相关联,而不是类型的实例。

每当加载一个类型时,将加载与该类型相关联的所有属性。这只会发生一次类型,这意味着如果您创建100个该类型的实例,属性将只加载一次。

我猜他们留在记忆中直到申请退出。