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コントロールを使用していますか?

それはいくつかの欠点があり、ページが多くのメディアや複雑なスクリプトが含まれている場合は特に、いくつかのシナリオでは、巨大な(増分)メモリリークを引き起こす可能性があり、そのページがリロードされるとき、または/ ..不運なタイミングで

関連する問題