1

WindowsPhone7アプリのメモリ使用量を分析しようとしています。プロパティをクエリする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が考慮されなくなります。

Mangoメモリプロファイラーは合計を追跡しますが、管理対象ヒープの割り当てを分類するだけです。GPUリソ​​ース、オーディオ、アプリバイナリ自体以外に、大量のアンマネージメモリを使用している可能性があるのは他にありますか?私がしていることよりも、記憶を追跡するための賢明なツールや方法はありますか?

4

2 に答える 2

1

ダウンロードしたファイル(Webからの画像を含む)は、大量のメモリを使用する可能性があります。それらを使用している場合は、メモリを適切に解放してください(http://blogs.msdn.com/b/swick/archive/2011/04/07/image-tips-for-windows-phone-7を参照してください)。 .aspx)。

于 2011-09-13T15:57:28.653 に答える
0

WebBrowser コントロールを使用していますか?

これにはいくつかの欠陥があり、特にページに多くのメディアや複雑なスクリプトが含まれている場合、または不運なタイミングでページが再読み込み/変更された場合など、シナリオによっては大量の (および増分の) メモリ リークが発生する可能性があります。

于 2012-07-08T19:53:59.800 に答える