在我的WPF应用程序中,我们有各种自定义控件,这些控件中的依赖项属性使用各种属性,如SortOrder
,MaxLength
等;这些属性值在PropertyGrid
控件中用于标识特定属性的排序顺序等。
使用ANTS探查器我发现这些属性对象始终保留在内存中,即使原始自定义控件不再在内存中。 Profiler会显示这些属性的保留图 - http://weblogs.asp.net/blogs/akjoshi/CustomAttributeRetentionGraph.png
我不确定为什么会发生这种情况?
答案 0 :(得分:2)
Attribute
与类型相关联,而不是类型的实例。
每当加载一个类型时,将加载与该类型相关联的所有属性。这只会发生一次类型,这意味着如果您创建100个该类型的实例,属性将只加载一次。
我猜他们留在记忆中直到申请退出。