5 


监视应用程序

Sun JavaTM Wireless Toolkit for CLDC 提供了若干用于监视应用程序性能的工具。这些工具能够帮助您调试和优化代码:



注 - 监视功能可能会降低应用程序的执行速度。




5.1 使用事件探查器

事件探查器记录应用程序中的每个方法。对某次特定的应用程序运行,事件探查器都计算出每个方法占用的时间,以及调用每个方法的次数。当应用程序结束运行并关闭仿真器后,将弹出事件探查器,您可以从中浏览所有的方法调用信息。

要打开事件探查器,请选择“编辑”>“首选项”。请参见图 5-1。在左窗格中单击“监视”。在右窗格中选中“启动 Profiling”。如果您想查看所有系统实现方法的配置处理信息,请选择“显示系统类”。否则,事件探查器将只显示包含对应用程序方法调用的系统方法。单击“确定”。

图 5-1 打开事件探查器

在“首选项”窗口中,选择监视器类别,然后选中“启动 Profiling”

现在单击“运行”按钮启动应用程序。以通常的方式与您的应用程序进行交互操作。结束后,关闭仿真器。事件探查器弹出,并显示有关应用程序中所有方法调用的信息。

图 5-2 方法事件探查器

正在查看 DefaultColorPhone 的方法事件探查器

事件探查器显示两种类型的信息:



注 - 从仿真器中获得的配置处理值反映不出真实设备上的实际值。



5.1.1 方法调用图

方法调用图显示方法调用的层次结构。调用其他方法的方法显示为文件夹。双击某个方法将其打开,并查看该方法所调用的方法。没有调用任何其他方法的方法显示为灰色圆圈。

您可以搜索某个特定类或方法名。单击“查找”,并填写名称。搜索将从方法调用图中的当前选择开始执行,直到最后。如果您想搜索完整的方法调用图,请在单击“查找”按钮之前选中“环绕”。

在方法调用图中单击其他节点时,事件探查器的右侧就会显示该节点方法的详细信息。

5.1.2 执行时间和调用次数

事件探查器窗口的右侧显示有关方法的详细信息。您可以看到方法名、方法调用次数以及仿真器使用该方法所用的时间。执行时间有四种不同的描述方法:

单击任意一列,以按照该列进行排序。再次单击该列,可以在升序和降序之间切换。

右窗格显示方法调用图中当前所选节点中包含的方法。如果您想查看每个方法,请在方法调用图中单击 <root> 节点。

5.1.3 保存和装入事件探查器信息

要保存您的事件探查器会话,请在事件探查器窗口中单击“保存”按钮。然后选择一个文件名。

要装入事件探查器会话,请选择“文件”>“实用程序”。单击“事件探查器”,然后按“启动”。选择文件后,事件探查器窗口会出现,并显示所有会话信息。


5.2 使用内存监视器

许多 MIDP 设备上的内存都不够用。Sun JavaTM Wireless Toolkit for CLDC 中的内存监视器使您可以轻松地检查应用程序内存的使用情况。您可以查看应用程序使用的内存总量,以及每个对象的内存使用情况详细列表。

要打开内存监视器,请选择“编辑”>“首选项”。然后在左窗格中单击“监视”。选择“启用内存监视器”。

下次运行仿真器时,就会显示内存监视器窗口,同时显示一幅随时间变化的应用程序内存使用情况图。由于创建的每个对象都被记录下来,因此内存监视器会使应用程序的启动速度变慢。

图 5-3 内存监视器图

选择了“图形”选项卡的内存监视器扩展

内存监视器图显示以下信息:

请记住,要修改堆栈大小,可以选择“编辑”>“首选项”,然后选择“存储”选项卡。有关详细信息,请参见第 3 章

要让系统执行垃圾回收,请单击“运行 GC”。



注 - 在仿真器上看到的内存使用情况与真实设备上看到的不完全相同。请记住,仿真器并不能代表真实设备。它仅仅是其所支持的 API 的一种可能实现。



要查看有关应用程序中对象的详细信息,请在内存监视器窗口中单击“对象”选项卡。

图 5-4 内存监视器对象显示

内存监视器扩展的“对象”选项卡

将显示一个包括以下列的表:

单击任意一列标题,按照该列进行排序。

通过从内存监视器窗口菜单中选择“查看”>“查找...”,可以搜索某个特定的类名。

5.2.1 保存和装入内存监视器信息

要保存内存监视器会话,请单击“保存”按钮,然后选择一个文件名。

要装入内存监视器会话,请选择“文件”>“实用程序”。单击“内存监视器”,然后按“启动”。选择文件后,内存监视器窗口会出现,并显示所有会话信息。


5.3 使用网络监视器

MIDP 应用程序至少能进行 HTTP 网络连接,同时也可以进行其他类型的网络连接。网络监视器提供了一种查看应用程序通过网络发送和接收信息的便捷方式。此方法可以帮助您对网络交互进行调试或寻找优化网络通信流量的途径。

要打开内存监视器,请选择“编辑”>“首选项”。在左窗格中单击“监视”。选中“启用网络监视”。

下次您运行仿真器时,就会显示网络监视器窗口。

图 5-5 网络监视器

网络监视器的 "HTTP/HTTPS" 选项卡

应用程序进行任何类型的网络连接时,将捕获并显示有关该连接的信息。图中显示了 HTTP 请求和响应。

屏幕左侧显示消息和消息片段的层次结构。单击某条消息或消息的某一部分,可在网络监视器的右侧查看其详细信息。双击某条消息或消息的各部分,可展开或收拢它们。

消息主体以原始十六进制值及对应文本进行显示。



注 - 您可对尚处于发送过程的消息进行检查。未完成发送的消息在消息树中以粗体高亮显示。



5.3.1 过滤消息

过滤器用于检查网络通信总流量的某个子集。过滤设置针对于当前使用的网络协议。

要使用过滤器,请按下 "Filter Settings" 按钮。根据您的需要,更改过滤设置。


表 5-1 网络监视器过滤设置

网络协议

过滤设置

HTTP/HTTPS

输入要与 HTTP 消息的各部分进行匹配的文本,这些部分包括:URL、状态行、标头或主体。例如,在 URL 字段中输入 slashdot 将仅显示其 URL 包含 slashdot 的消息。

SMS/CBS

可以指定要匹配的协议、消息类型和方向。此外,还可以输入要与发送方、接收方以及消息内容进行匹配的文本。

MMS

输入要与方向、发送方、接收方以及抄送和密件抄送接收方进行匹配的文本。此外,还可以按照主题、内容 ID、内容位置、MIME 类型和编码进行过滤。

OBEX、SPP/L2CAP

您可以使用 URL 或标头内容进行过滤。

APDU、JCRMI

对 URL 或消息内容进行过滤。

SIP

无可用

套接字、SSL、数据报、Comm

输入要与连接字符串 (URL) 或内容进行匹配的文本。


 

完成过滤设置输入后,按下“确定”,返回到网络监视器。"Filter" 复选框处于选中状态,表明正在使用某个过滤器。要禁用过滤器并查看所有消息,请取消选中该复选框。

5.3.2 对消息进行排序

要使消息树按某种特定顺序排列,请单击 "Sort By" 组合框并选择一种标准。

5.3.3 保存和装入网络监视器信息

要保存网络监视器会话,请从网络监视器窗口菜单中选择“文件”>“保存”,或者“文件”>“另存为”,然后选择一个文件名。

要装入网络监视器会话,请选择“文件”>“实用程序”。从列表中选择“网络监视器”,然后按“启动”。选择文件后,网络监视器窗口会出现,并显示所有会话信息。

5.3.4 清除消息树

要从网络监视器中删除所有消息,请从网络监视器菜单中选择“编辑”>“清除”。