2010-12-10 2 views
0

내 WPF 응용 프로그램에는 다양한 사용자 지정 컨트롤이 있으며이 컨트롤의 종속성 속성은 SortOrder, MaxLength 등과 같은 다양한 특성을 사용합니다. 이러한 속성 값은 PropertyGrid 컨트롤에서 특정 속성에 대한 정렬 순서 등을 식별하는 데 사용됩니다.사용자 지정 특성이 가비지 수집되지 않습니다?

ANTS 프로파일 러를 사용하여 원래의 사용자 지정 컨트롤이 더 이상 메모리에 있지 않더라도 이러한 특성 개체가 항상 메모리에 남아 있음을 알게되었습니다. http://weblogs.asp.net/blogs/akjoshi/CustomAttributeRetentionGraph.png

alt text

나는이 단서를 일어나고있는 이유를 잘 모르겠습니다 - 프로파일은 이러한 특성이 유지 그래프를 보여줍니다?

답변

2

Attribute은 유형과 연관되며 유형의 인스턴스가 아닙니다.

유형이로드 될 때마다 모든 속성이 해당 유형과 연관되어로드됩니다. 그리고 이것은 유형에 대해 한 번만 발생합니다. 즉, 해당 유형의 인스턴스를 100 개 생성하면 속성은 한 번만로드됩니다.

응용 프로그램이 종료 될 때까지 메모리에 남아있을 것입니다.

+0

속성 (DP)과 관련된 특성 범위 (속성 범위 포함)는 어떻게됩니까? 각각의 새로운 객체로 새로운 인스턴스가 생성되는 것을 볼 수 있습니다. – akjoshi

+1

'Properties'와'Fields'는'Type'의 일부입니다. 또한 유형별로 한 번로드됩니다. – decyclone

+0

자, 속성을 300 개의 속성과 연결한다고 가정하면이 속성의 객체 300 개가 제어가 삭제 된 후에도 메모리에 남아있게됩니다 (객체가 생성되면). – akjoshi

관련 문제