5


アプリケーションの監視

Sun JavaTM Wireless Toolkit for CLDC には、アプリケーションの動作を監視するためのツールがいくつか用意されています。これらのツールは、コードのデバッグや最適化を行うときに役立ちます。



注 - 監視機能を使用すると、アプリケーションの実行速度が低下することがあります。




5.1 プロファイラの使用

プロファイラでは、アプリケーション内の各メソッドが追跡されます。アプリケーションの 1 回の実行について、各メソッドに費やされた時間と各メソッドが呼び出された回数が計算されます。アプリケーションの実行を終了し、エミュレータを停止すると、プロファイラのウィンドウが開きます。そこでメソッド呼び出しの情報を閲覧できます。

プロファイラを有効にするには、「編集」->「環境設定」を選択します。図 5-1 を参照してください。左側の区画で「モニター」をクリックします。右側の区画で、「プロファイルを有効」にチェックマークを付けます。すべてのシステム実装メソッドについてプロファイル情報を表示するには、「システムクラスの表示」にチェックマークを付けます。それ以外の場合は、アプリケーションのメソッドへの呼び出しを含んでいるシステムメソッドだけがプロファイラに表示されます。「了解」をクリックします。

図 5-1 プロファイラの有効化


In the preferences window, select the monitor category, then check Enable Profiling

続いて、「実行」ボタンをクリックしてアプリケーションを起動します。通常のようにアプリケーションを操作します。操作が完了したら、エミュレータを停止します。プロファイラのウィンドウが開き、アプリケーション内のすべてのメソッド呼び出しに関する情報が表示されます。

図 5-2 メソッドプロファイラ


Methods Profiler viewing the DefaultColorPhone

プロファイラには、次の 2 種類の情報が表示されます。



注 - エミュレータから取得されるプロファイル値は、実際のデバイスでの値を反映するものではありません。



5.1.1 呼び出しグラフ

呼び出しグラフは、メソッド呼び出しの階層を示します。ほかのメソッドを呼び出すメソッドは、フォルダとして表されます。メソッドをダブルクリックすると、そのメソッドで呼び出されるほかのメソッドを確認できます。ほかのメソッドをまったく呼び出さないメソッドは、グレーの円で表されます。

特定のクラス名やメソッド名を検索できます。「検索」をクリックし、名前を入力します。呼び出しグラフで現在選択されているものから、末尾に向かって検索が実行されます。呼び出しグラフ全体を検索するには、「折り返す」にチェックマークを付けてから、「検索」をクリックします。

呼び出しグラフで別のノードをクリックするたびに、そのノードのメソッドに関する詳細がプロファイラの右側に表示されます。

5.1.2 実行時間と呼び出された回数

プロファイラウィンドウの右側には、メソッドに関する詳細情報が表示されます。メソッドの名前、呼び出された回数、およびエミュレータでそのメソッドに費やされた時間を確認できます。実行時間は、4 つの方法で表されます。

いずれかの列をクリックすると、その列を基準にしてソートできます。もう一度クリックすると、昇順ソートと降順ソートを切り替えることができます。

右側の区画には、呼び出しグラフで現在選択されているノードについて、そこに含まれているメソッドが表示されます。すべてのメソッドを表示するには、呼び出しグラフで <root> ノードをクリックします。

5.1.3 プロファイラ情報の保存およびロード

プロファイラのセッションを保存するには、プロファイラウィンドウの「保存」ボタンをクリックします。ファイル名を指定します。

プロファイラのセッションをロードするには、「ファイル」->「ユーティリティー」を選択します。「プロファイラ」をクリックし、「起動」を押します。ファイルを選択すると、すべてのセッション情報がロードされたプロファイラのウィンドウが開きます。


5.2 メモリーモニターの使用

多くの MIDP デバイスでは、メモリーの量が限られています。Sun JavaTM Wireless Toolkit for CLDC には、アプリケーションのメモリー使用率を簡単に調べることのできるメモリーモニターが含まれています。アプリケーションで使用されるメモリーの合計量と、オブジェクトごとのメモリー使用率を示す詳細リストを確認できます。

メモリーモニターを有効にするには、「編集」->「環境設定」を選択します。左側の区画で「モニター」をクリックします。「メモリーモニターを有効」にチェックマークを付けます。

次にエミュレータを実行したときに、メモリーモニターのウィンドウが開き、アプリケーションのメモリー使用率の経時変化を示すグラフが表示されます。メモリーモニターを使用すると、作成されるすべてのオブジェクトが記録されるので、アプリケーションの起動が遅くなります。

図 5-3 メモリーモニターのグラフ


Memory monitor extension with Graph tab selected

メモリーモニターのグラフには、次の情報が表示されます。

ヒープサイズを変更するには、「編集」->「環境設定」を選択し、「ストレージ」タブ選択します。詳細は、第 3 章を参照してください。

システムでガベージコレクションを実行させるには、「GC の実行」をクリックします。



注 - エミュレータで観察されるメモリー使用率は、実際のデバイスでのメモリー使用率と正確に一致するわけではありません。エミュレータは実際のデバイスを表すものではありません。サポートされている API を 1 つの方法で実装したものです。



アプリケーション内のオブジェクトについて詳細を表示するには、メモリーモニターウィンドウの「オブジェクト」タブをクリックします。

図 5-4 メモリーモニターのオブジェクトの表示


Memory monitor extension Objects tab

次の列を持つ表が表示されます。

列のタイトルをクリックすると、その列を基準にしてソートできます。

特定のクラス名を検索するには、メモリーモニターウィンドウのメニューから「表示」->「検索」を選択します。

5.2.1 メモリーモニターの情報の保存およびロード

メモリーモニターのセッションを保存するには、「保存」ボタンをクリックします。ファイル名を指定します。

メモリーモニターのセッションをロードするには、「ファイル」->「ユーティリティー」を選択します。「メモリーモニター」をクリックし、「起動」を押します。ファイルを選択すると、すべてのセッション情報がロードされたメモリーモニターのウィンドウが開きます。


5.3 ネットワークモニターの使用

MIDP アプリケーションでは、少なくとも HTTP ネットワーク接続を行うことができますが、ほかにもさまざまなネットワーク接続が可能です。ネットワークモニターを使用すると、アプリケーションによってネットワーク上で送受信されている情報を簡単に確認できます。ネットワークでの対話をデバッグする場合や、ネットワークトラフィックの最適化方法を検討する場合に、この機能は便利です。

ネットワークモニターを有効にするには、「編集」->「環境設定」を選択します。左側の区画で「モニター」をクリックします。「ネットワークモニターを有効」にチェックマークを付けます。

次にエミュレータを実行したときに、ネットワークモニターのウィンドウが表示されます。

図 5-5 ネットワークモニター


Network Monitor HTTP/HTTPS tab

アプリケーションでネットワーク接続が行われると、その接続に関する情報が取り込まれて表示されます。図は、HTTP 要求と応答を示しています。

左側には、メッセージの階層とメッセージの一部分が表示されます。メッセージまたはメッセージの一部分をクリックすると、その詳細がネットワークモニターの右側に表示されます。メッセージまたはメッセージの一部分をダブルクリックすると、メッセージを展開または折りたたむことができます。

メッセージ本文は、16 進値の生データおよび対応するテキストで表示されます。



注 - すでに送信の準備に入っているメッセージを調べることもできます。不完全なメッセージは、メッセージツリー内でボールドで強調表示されます。



5.3.1 メッセージのフィルタ機能

フィルタは、ネットワークトラフィックの一部分を調べるときに役立ちます。フィルタ設定は、使用するネットワークプロトコルだけに適用されます。

フィルタを使用するには、「フィルタ設定」をクリックします。必要に応じてフィルタ設定を変更します。


表 5-1 ネットワークモニターのフィルタ設定

ネットワーク
プロトコル

フィルタ設定

HTTP/HTTPS

URL、ステータス行、ヘッダ、本文など、HTTP メッセージのさまざまな部分と一致するテキストを入力します。たとえば、「URL」フィールドに slashdot と入力すると、URL に slashdot が含まれるメッセージだけが表示されます。

SMS/CBS

照合するプロトコル、メッセージタイプ、および方向を指定できます。送信者、受信者、およびメッセージの内容と照合するテキストも入力できます。

MMS

方向、送信者、受信者、CC 受信者、および BCC 受信者と照合するテキストを入力します。件名、コンテンツ ID、コンテンツの場所、MIME タイプ、およびエンコーディングに基づいてフィルタリングすることもできます。

OBEX、SPP/L2CAP

URL またはヘッダーの内容を使ってフィルタリングできます。

APDU、JCRMI

URL またはメッセージの内容に基づいてフィルタリングします。

SIP

利用できません。

Socket、SSL、Datagram、Comm

接続文字列 (URL) または内容のどちらかと照合するテキストを入力します。


 

フィルタ設定の入力が完了したら、「了解」をクリックしてネットワークモニターに戻ります。「フィルタ」チェックボックスにチェックマークが付きます。これは、フィルタが使用されていることを示します。フィルタを無効にしてすべてのメッセージを表示するには、チェックマークを解除します。

5.3.2 メッセージのソート

メッセージツリーを特定の順序で並べ替えるには、「ソート」コンボボックスをクリックし、条件を選択します。

5.3.3 ネットワークモニターの情報の保存およびロード

ネットワークモニターのセッションを保存するには、ネットワークモニターウィンドウのメニューから、「ファイル」->「保存」を選択するか、「ファイル」->「別名保存」を選択します。ファイル名を指定します。

ネットワークモニターのセッションをロードするには、「ファイル」->「ユーティリティー」を選択します。リストから「ネットワークモニター」を選択し、「起動」を押します。ファイルを選択すると、すべてのセッション情報がロードされたネットワークモニターのウィンドウが開きます。

5.3.4 メッセージツリーの消去

ネットワークモニターからすべてのメッセージを削除するには、ネットワークモニターのメニューから「編集」->「消去」を選択します。