2011-09-13 4 views
1

Windows Phone 7 응용 프로그램의 메모리 사용을 분석하려고합니다. ApplicationPeakMemoryUsage 속성을 쿼리하면 흡수 테스트 후 ~ 90Mb의 값이 산출됩니다. System.GC.GetTotalMemory(true)은 현재 ~ 11Mb를 반환하므로 잔액은 관리되지 않는 메모리 여야합니다. 이 앱은 관리되지 않는 메모리를 명시 적으로 할당하지 않으므로 GPU 애셋, 오디오 및 앱 바이너리 자체로 간주됩니다.메모리 프로파일 링 도구 및 방법

주변 전화를 ContentManager.Load() 및 GPU 리소스 할당 (new RenderTarget2D() 등)으로 둘러 쌉니다.

System.GC.Collect(); 
unused = System.GC.GetTotalMemory(true); 
GC.WaitForPendingFinalizers(); 
long mem = ((long)Microsoft.Phone.Info.DeviceExtendedProperties.GetValue("ApplicationCurrentMemoryUsage")); 
. 
. // perform loads/allocations 
. 
mem = ((long)Microsoft.Phone.Info.DeviceExtendedProperties.GetValue("ApplicationCurrentMemoryUsage")) - mem; 

비슷한 코드로 나는 내 애플 리케이션에 걸쳐이 총 ~ 45-50Mb 렌더링 버퍼, 텍스처/오디오 자원 등을 사용하는 메모리에 대한 대략적인 수치를 얻을 수 있어요. ApplicationCurrentMemoryUsage은 초기화가 시작될 때 즉시 10MB 미만으로 산출됩니다. 11Mb 관리 힙 (부분적으로 이중 계산입니다!)을 빼면 ~ 20Mb가 계산되지 않습니다.

망고 메모리 프로파일 러는 합계를 추적하지만 관리 힙에 대한 할당 만 분해합니다. GPU 리소스, 오디오 및 응용 프로그램 바이너리 이외의 많은 양의 관리되지 않는 메모리를 사용하고있을 수도 있습니다. 내가하는 일보다 메모리를 추적 할 수있는 더 현명한 도구 나 방법이 있습니까?

답변

0

WebBrowser 컨트롤을 사용하고 있습니까?

그것은 몇 가지 결함을 가지고 있으며, 페이지가 많은 미디어 또는 복잡한 스크립트를 포함하고 특히, 일부 시나리오에서는 거대한 (증분) 메모리 누수가 발생할 수의 페이지를 다시로드 할 때, 또는/... 불운 타이밍

관련 문제