帮你分析java 应用程序——jSonde 详细介绍

小编辑 发布于 2010/05/20 20:38
阅读 967
收藏 3

1概述:

jSonde能够帮助你分析java应用程序。

她能够生成序列图、CPU和内存的性能评估以及不同格式的汇总:如jar依赖等。

使用jSonde不需要特别的知识,她适用于不同的操作系统和Java环境。

jSonde主要由2个组件:

1    一个配置在Java进程中的代理,是为了收集信息

2    一个用来显示代理收集的信息的GUI

2Java应用中配置jSonde代理

主要有2中方法将jSonde配置到Java应用中:在Java命令行附加特定的参数,或者不重启应用的前提下动态的添加代理。

2.1动态添加代理

jSonde代理添加到应用程序中最简单的方法:

选择按钮"File" \ "Attach to Sun JVM",你可以看到如下对话框:

在这个对话中列出的是当前你电脑上所有的Java应用程序手册其他章节中有关于这个对话框中其他的区域介绍)。需要注意的是这个特性只在JVM1.6+测试过,可能不能在其他版本的Java虚拟机中正常使用。

2.2通过命令行参数添加代理

假设你是通过输入命令:”java -jar app.jar来启动Java应用程序的。

你需要在命令行添加新的参数才能使应用启动时具有jSonde代理特性.

新参数如下:

java -javaagent:<path-to-jSonde-folder>/lib/jsonde.agent-1.0.0.beta6.jar=60001-jar app.jar

不仅可以J2SE应用中使用jSonde分析程序,下面还有在TomcatJBoss和其他容器中使用jSonde分析程序的示例。

 

3Apache Tomcat

Microsoft Windows

 

启动脚本%TOMCAT_HOME%\bin\catalina.bat

脚本文件中添加如下参数:

set JAVA_OPTS=-javaagent:<path-to-jSonde-folder>/lib/jsonde.agent-1.0.0.beta6.jar=60001 %JAVA_OPTS%

如果tomcat是通过Windows服务或者系统托盘启动的,那么就添加下面的参数:

-javaagent:<path-to-jSonde-folder>/lib/jsonde.agent-1.0.0.beta6.jar=60001

 

GNU/Linux & Mac OS X

启动脚本: $TOMCAT_HOME/bin/catalina.sh

在脚本文件中添加如下参数:

JAVA_OPTS="-javaagent:<path-to-jSonde-folder>/lib/jsonde.agent-1.0.0.beta6.jar=60001 $JAVA_OPTS"

 

4JBoss

Microsoft Windows

启动脚本:%JBOSS_HOME%\bin\run.bat

在脚本文件中添加如下参数:

set JAVA_OPTS=-javaagent:<path-to-jSonde-folder>/lib/jsonde.agent-1.0.0.beta6.jar=60001 %JAVA_OPTS%

 

GNU/Linux & Mac OS X

启动脚本: $JBOSS_HOME/bin/run.sh

在脚本文件中添加如下参数:

JAVA_OPTS="-javaagent:<path-to-jSonde-folder>/lib/jsonde.agent-1.0.0.beta6.jar=60001 $JAVA_OPTS"

 

5其他的应用服务器

查看应用服务器配置文件中设定jvm参数的地方,

注意:应该和你指定Memory选项:-Xms & -Xmx在相同的位置

 

6applets使用jSonde

jSonde能够分析在安装Java Plugin的浏览器中运行的applets

Java(TM) Plug-in Control Panel/ Advanced/Java Runtime Parameters中添加如下选项:

-javaagent:<path-to-jSonde-folder>/lib/jsonde.agent-1.0.0.beta6.jar=60001

Windows平台下,通过控制面板访问"Java(TM) Plug-in Control Panel"

注意:如果设定选项过程中浏览器正在运行,那么设定完成后你必须重启浏览。

 

还可以在appletviewer添加参数-J-javaagent:<path-to-jSonde-folder>/lib/jsonde.agent-1.0.0.beta6.jar=60001

然后通过appletviewer启动applets,此时jSonde也会起作用的

 

7通过命令行参数连接jSonde代理

在将jSonde代理参数添加到启动脚本并且启动程序之后,会输出如下信息:

jSonde agent started

现在可以启动jSonde GUI,然后选择File¥New Project 按钮。会看到如下的对话框,这个对话框已经在 动态添加代理章节中介绍过了。

Project name

jSonde工程名称,用来创建工程文件。

Project files location

指定jSonde工程文件存放位置。每个工程是由一些文件名相同、后缀名不同的文件组成。

Agent host

运行jSonde代理的电脑IP地址。如果jSonde GUI和代理在同一个台电脑上,使用127.0.0.1就行了。

Agent port

连接jSonde代理和GUITCP端口。

Filters

过滤器-指定需要被分析的文件。下面的有介绍

 

8jSonde中的过滤器

能够在jSonde指定过滤器来分析特定的Java类,这样就可以只分析你编写的Java类,同时还可以提升效率。

假设你所有的类文件都在包com.mycompany中,首先需要排除所有的类,不选择*,然后选择com.mycompany

最后点击Connect按钮-jSonde已经开始工作了。

9使用jSonde分析应用程序

可以使用主菜单或者左侧的accordion 面板来打开不同的视图:序列图、报表profiling等。

10查看序列图

选择Sequence Diagrams,会看到由应用程序中的类组成的树。这棵树的根节点是jSonde发起root方法调用。

在这些指定类的生命周期中,root方法是第一个被调用的函数。(见上面关于过滤器的部分)

如果在选定的方法上双击,会在工作去打开一个新的序列图标签。

可以使用工具栏上的按钮来调整图的显示,鼠标 拖动也同样可以。

 

11查看报表

选择Reports来查看这些报表,也可以通过主菜单来访问。

 

11.1依赖报表

这类报表是用来查看工程源码依赖的第三方资源(例如.jar文件),还可以用来查找缺失、冗余的依赖。

 

11.2关于极端代码的运行时间报表

通过运行时间找出极端代码:

按照分组jar文件的方式列出运行最或者最被使用的方法

 

11.3抛异常最多的方法

这种报表用来汇总抛异常最多的方法。如果一个 方法抛出一个异常次数很多,那么就需要复审它的接口了。

 

12jSonde 分析

jSonde支持CPU和内存监控分析,能够找出执行次数最多的方法、创建次数最多的对象等。

点击 accordion 面板中的Profiler,然后选择合适的profile视图。

12.1CPU profiler

CPU profiler 显示方法被调用的测试已经方法总共运行的时间。为了方便浏览,数据时按照树的方式显示:

12.2堆分析

堆分析能够帮助用户浏览Java堆快照,分析哪些对象经常被创建、哪些对象占用大量的内存,以及其他的数据。

加载中
1
mallon
mallon

跟netbeans自带的profiler或者jdk自带的jvisualvm相比有什么优点?

返回顶部
顶部