リークを追え!」というセッションのレポートをお届けします。本セッションは以下のような方にオススメです。不断の努力でアプリケーションを開発して、やっとの思いでリリースしたのに「コンピューターのメモリが不足しています」というメッセージに涙で枕を濡らしたことがあるちなみにスピーカーの牧大介氏は、私自身、サポートでお世話になった方で、何度も何度も何度も窮地を助けて頂きました。_)mまた、このような形でお会いできるのが非常に光栄です。まとめこのセッションのすごいところかなり実践に即した内容でした。本セッションの内容は、すぐに現場に適用可能といっても過言ではございません。Studioを起動して、その場でコーディング、メモリーリークを意図的に発生させて、プロファイルを取得して解析、問題のあるオブジェクトを発見するという、まるでリズミカルな音楽を奏でているような、もしくはスリリングな展開のドラマを見ているような臨場感の溢れるセッションでした(^o^)見ていて興奮しました。メモリーリークアプリケーション開発者なら誰もが経験したことがあるであろう、あの忌まわしきOutOfMemoryのエラーメッセージと同時に、アプリケーションが落ちるアレです。これを目にすると、休日も気になってしょうがなくて、心ここにあらず、食事も喉を通らないような状態になってしまいます。本セッションでは、その解決方法を非常に論理的にわかりやすくご説明されていました。レガシーな対処方法セッションは、(おそらく)サポート宛に来たよくある質問を例に挙げて、それ対する回答をスピーカーである牧大介氏が回答するという形で進みました。今回の最も核となる質問は以下でした。「レガシーな方法」と「イマドキな方法」を比較していました。ダンプファイルを取得して解析するという手法です。コマンドは以下のとおりです。C:\temp\1.dumpただしあくまでこのコマンドで取得できるのはダンプ情報であり、スナップショットです。そのダンプを取った時点での情報です。このように、たった一つのスナップショットだけでは、オブジェクトの傾向(どのオブジェクトが増えているかとか)を知ることは出来ません。以下のように、procdumpコマンドで取得したダンプ情報をwindbgで解析している様子がセッションで公開されていました。先程ご紹介したメモリーダンプのスナップショット取得という方法ではなく、もっとインテリジェントでエレガントな方法がセッションの中で披露されていました。Studioによるメモリ解析です。この方法は端的に言ってしまうと以下でございます。Studioでデバッグ実行中のアプリケーションに対して、メモリのスナップショットを定点観測的に複数回取得し、その差分を観察することで、増加したオブジェクトを分析する。イメージにしますと、こんな感じです。なんかすごそうな雰囲気醸し出してますよね。オラワクワクすっぞ〜。実際にやってみましょう。牧大介さんのセッションのようにライブ感溢れるレポートをお届けします。以下のようなコードを作成してみました。これは、本セッションで紹介されたコードです。Dictionary型の変数をForm1のインスタンス変数として持っていますので、ボタンをクリックするたびに100MBずつメモリが増加していきます。ちなみにGCするボタンがありますが、変数dは強参照になりますので、ガベコレでクリアされません。}デバッグ実行してみましょう。普段はすぐ閉じてしまう(><)診断ツールを表示しておきます。はじめのスナップショットを取得します。「スナップショットの作成」をクリックします。スナップショットが作成されました。́・ω・`)」ボタンをクリックします。「診断ツール」のメモリが上がりました。一回クリックしてみます。何回かやってみましょう。ポチポチポチポチポチポチポチポチポチポチポチポチポチポチポチポチポチポチポチポチポチポチ。あ、OutOfMemoryで落ちてしまいました(><)やっちまったなぁ~。申し訳ございませんでした。一回気を取り直してやり直します。3回位にとどめておきます。診断ツールは以下のようになりました。スナップショットを取ります。「ヒープサイズ(相違)」の「+307,200.61KB」をクリックします。すると、一回目のスナップショットと、2回目のスナップショットの差分が出てきます。「サイズの相違(バイト)」を見てみますと、明らかに怪しげなものがあります(¬_¬。)「GCTest.Form1」ってさっき、OutOfMemoryを引き起こすコードを書いたFormですよね。「GCTest.Form1」をクリックしてみます。「参照された型」をクリックしてみます。byte[]>って例のアレぢゃないですか。́・ω・`)をクリックした回数(3回)ですよね。途中、ポチポチしすぎて、アプリをOutOfMemoryで落とすという失態がアリましたが、まぁ、ライブ感は出てましたよね。これで犯人は突き止めました。