BlogKLabは、多くのスマートフォン向けゲームを開発・提供しています。スマートフォン向けゲームの開発と運用は、Webソーシャルゲームと比べて格段に複雑で、またコンシューマゲーム開発とも異なったノウハウが求められる領域もあります。このブログでは、KLabのゲーム開発・運用の中で培われた様々な技術や挑戦とそのノウハウについて、広く紹介していきます。ここまでで紹介してきたプロファイラがどういう仕組みでプロファイリングしているかを解説します。表示している値がどう計算されているのかを把握することで、よりプロファイラを理解して使いこなすことができるようになるはずです。出力は次のような形式でした。利用できるプロファイル結果と同じフォーマットです。利用しているデータです。つけていないときは出力されません。サンプルとしてカウントしていました。表示する手前でコールスタックごとのサンプル数という形になります。ハンドラーから追いかけて行きましょう。バイナリ形式で書き出していきます。スタックトレースを取得します。ツール側で集計しています。一度サンプルを取得しているので1サンプルあたり10msに換算して時間表示をしています。いう表示は無視しましょう。実際のメモリ確保を行います。指定された容量を確保する度に、アロケータを呼び出した箇所のスタックトレースを取得します。平均とした乱数でサンプリングすることで、プログラムのメモリ確保のパターンによって特定の箇所を実際の割合以上にサンプリングしてしまうことを避けています)そしてアロケータはスタックトレースごとにアロケート回数、アロケートしたバイト数を記録しておき、さらにGCによってそのメモリオブジェクトが解放されるときに解放した回数、開放したバイト数を保存するようにします。ヒーププロファイラと同じフォーマットを利用しています。これは次のようなフォーマットになっています。あることを示しています。)以降の行がプロファイル結果です。マークの後がスタックトレースなのは他のプロファイルと同様です。元に推定値を計算します。回に1回の割合でサンプリングされることになります。表示する推定値となります。経由で取得する段階で選択していた方だけが記録されています。差分を取ってしまうと全く意味のない結果が表示されることになるので注意が必要です。参照するのは問題ありません。取得してしまって、差分を計算するスクリプトを作ったほうがリークの調査には良いかもしれません。この記事を書くために調査していて気づいたので、今度試してみます。プロファイルと同じように単純なスタックトレースごとのカウントを表現するプロファイラーを自作できます。次のソースコードは、コネクションプールの利用状況をプロファイルすることを想定したサンプルコードです。ペアで同じ値を利用します。再利用することは可能です。使って解析してみます。6つのコネクションを利用中であることが判りました。いうクエリパラメータをつけてプレインテキストで見ても十分役に立ちます。クエリを投げてから結果が返ってくるまでをプロファイルしてみると面白いかもしれません。