우리는 SL4, PRISM 및 MVVM을 사용하여 LOB 응용 프로그램을 작성하고 있습니다. 최근에 내 앱이 메모리를 공개하지 않는다는 사실을 알게되었습니다. b/w 페이지를 전환하면 약 150MB에서 시작하여 1GB 이상으로 빠르게 증가합니다. 우리의 디자인은 이벤트를 청취하고 뷰를 적절한 영역에 주입하는 Controller 클래스 (Unity singleton)를 각각 갖는 3 개의 모듈을 포함합니다. 이벤트를 발생시켜 뷰를 삽입 할 때 이러한 컨트롤러에서 일어나는 일입니다.Silverlight 프리즘/단일체 메모리 누수
var v = Container.resolve<view>()
var vm = Container.resolve<viewmodel>()
v.datacontext = vm;
myregion.addtoregion(v);
그래서이 뷰를 호출하면이 100 번을 종료합니다. 그리고 addviewregion 메서드에서 새 뷰를 추가하기 전에 기존 뷰를 모두 제거합니다. 그리고 메모리 문제를보고 난 후, 제거해야 할 모든 뷰에 대해 addviewtoregion 메소드에서 뷰 & viewmodel을 null로 설정했습니다. 여전히 메모리 소비는 동일합니다. Unity ContainerControllled ...이 객체에 대한 참조를 보유하고있는 객체 (내 컨트롤러)입니까?
이것은 가능한 원인입니다. 이벤트 수집기 이벤트에 약한 이벤트 처리를 사용해야합니다. –
해결 된 단일 객체가 가비지 수집되지 않거나 컨테이너 구성에 문제가있는 것 같습니다. 다음 코드로 테스트했습니다. – user396491
WeakReference ref1 = new WeakReference (Container.Resolve