C# 自定义属性未被垃圾回收?

C# 自定义属性未被垃圾回收?,c#,wpf,memory-management,attributes,garbage-collection,C#,Wpf,Memory Management,Attributes,Garbage Collection,在我的WPF应用程序中,我们有各种自定义控件,这些控件中的依赖项属性使用各种属性,如SortOrder,MaxLength等。;这些属性值在PropertyGrid控件中用于标识特定属性的排序顺序等 使用ANTS profiler,我知道这些属性对象始终保留在内存中,即使原始自定义控件已不在内存中。探查器显示这些属性的保留图- 我不知道为什么会发生这种情况?任何Lead?属性与类型关联,而不是类型的实例 无论何时加载类型,都将加载与该类型关联的所有属性。对于一个类型,这只会发生一次,也就是说,

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

使用ANTS profiler,我知道这些属性对象始终保留在内存中,即使原始自定义控件已不在内存中。探查器显示这些属性的保留图-


我不知道为什么会发生这种情况?任何Lead?

属性与类型关联,而不是类型的实例

无论何时加载类型,都将加载与该类型关联的所有属性。对于一个类型,这只会发生一次,也就是说,如果您创建100个该类型的实例,那么属性只会加载一次


我猜它们在应用程序退出之前都会留在内存中。

与属性(DP)关联的属性(具有属性作用域)如何?我可以看到使用每个新对象创建的新实例。
属性
字段
类型
的一部分。每个类型也会加载一次。好吧,假设我将一个属性与300个属性相关联,那么即使在控件被销毁之后,该属性的300个对象仍将保留在内存中(一旦创建了对象)。