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 리소스, 오디오 및 응용 프로그램 바이너리 이외의 많은 양의 관리되지 않는 메모리를 사용하고있을 수도 있습니다. 내가하는 일보다 메모리를 추적 할 수있는 더 현명한 도구 나 방법이 있습니까?
을하지 않음으로 변경 다운로드 한 파일 사용 중 ... – moonshadow