4

Mango (7.1) のスケジュールされたバックグラウンド エージェントに取り組んでいます。

DeviceStatus.ApplicationPeakMemoryUsage何を最適化するかについてのインテリジェントな推測に基づいた手動トレース手法を使用して、メモリ使用量を 10.5MB から 6.5MB に削減することができました。

しかし、今は 6MB 未満に抑える必要があり、最後の 0.5MB はとらえどころのないことが証明されています。

メイン アプリで" Windows Phone Performance Analysis " ツールを実行することはできましたが、エージェントに対して実行する方法が見つからないようです。

エージェントのメモリがいっぱいになっている原因を突き止めるのに役立つツールやテクニックはありますか? 理想的には、コードとデータの両方を含むメモリ空間全体を調査する方法が必要であり、理想的にはリリース ビルドに対して機能する必要があります。

4

3 に答える 3

5

すでに述べたように、デバッガーは無視できないメモリオーバーヘッドを追加します。だから私が見つけた最良の方法は:

  • エミュレーターのコンソールをアクティブ化します:http://nicksnettravels.builttoroam.com/post/2011/01/19/Windows-Phone-7-Console-Window-on-64-bit-machine.aspx

  • コードの戦略的なポイント(たとえば、メイン関数の開始と終了、または大きなオブジェクトの割り当て後)で、メモリ消費量を表示します。

    Console.WriteLine("Function {0}: {1}", "name of your function", DeviceExtendedProperties.GetValue("ApplicationCurrentMemoryUsage"));
    
  • デバッガーを接続せずにアプリケーションを起動し(Ctrl + F5)、座って楽しんでください

于 2012-05-24T10:46:30.080 に答える
1

バックグラウンド エージェントをデバッグ モードで実行している場合は、エージェントのメモリ フットプリントが約 2MB 増加するため、問題ない可能性があります。

Visual Studio からではなく、アプリを直接実行する場合は、おそらく ApplicationPeakMemoryUsage を引き続き使用して、メモリの詳細を分離ストレージ内のファイルに書き出すことができます。

HTH - ルパート。

于 2012-05-24T10:27:46.640 に答える
0

次のブログ投稿が興味深いと思われるかもしれません。既にご覧になっているかもしれませんが、デバッグ メモリの追加と、メモリ フットプリントを削減するためのヒントの両方が説明されています。

http://www.pitorque.de/MisterGoodcat/post/Windows-Phone-Background-Agents-Pitfalls-(2-of-n).aspx

于 2012-05-24T10:38:04.543 に答える