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