我試圖分析我們的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