2014-09-26 4 views
0

많은 wpf 컨트롤이있는 응용 프로그램이 있지만 한 번에 볼 수있는 것은 적습니다. 사용자가 물마루 항목을 스크롤하면 뷰 모델 당 약한 참조의 이미지가 "캐싱"됩니다.사용 가능한 메모리가 충분하더라도 약한 참조가 손실되는 것을 방지하는 방법

작업 세트가 260MB이고 충분한 RAM이있는 경우에도 weakreferences가 참조하는 객체는 가비지 수집됩니다. 프로세스가 x86으로 실행 중입니다.

왜 GC가 너무 공격적입니까?

이것은 임시 해결책이며 맞춤 캐싱 서비스를 위해 노력하고 있지만이 동작에 놀랐습니다.

+4

GC 실행 동작이 결정적이지 않습니다. 0 세대의 현재 세그먼트가 가득 차면 실행됩니다. 당신은 당신의 약한 참조를 살아있게하기 위해 실행되지 않는 것에 의지 할 수 없습니다. 필요한 경우 강력한 참조 캐싱 메커니즘을 사용하십시오. –

+3

또한 이것을 고려하십시오 - 이미 GC'ed되어있을 때 참고 문헌이 필요하면 처음에는 약한 참조가 아니어야하며 캐시를 대체 할 수있는 방법이 필요합니다. – decPL

답변

0

의견을 남겨 주셔서 감사합니다. 사용할 수있는 충분한 메모리가 있다고해도 약한 참조가 캐싱에 사용될 수 있다고 믿는 다른 사람을 도울 수있는 답을 만들었습니다.

약한 참조는 응용 프로그램이 메모리 제한에 가깝지 않더라도 불필요하게 가비지 수집됩니다. 약한 참조는 항상 0 세대 스윕으로 수집됩니다.