JProbe 8.0:Java代码、内存及覆盖率分析王者回归

来源:互联网 发布:mac充电器怎么用 编辑:程序博客网 时间:2024/06/05 08:41
一. 简介:
JProbe为Quest公司的产品(Toad 、JProbe )。JProbe是一个完全为Java设计的解析器,而且它只能用于Java。它可以很好地完成我们所需要的任务。JProbe在简单易用的集成化套件中,为servlet、JSP和EJB应用代码提供了强大的Java性能分析、内存纠错、代码覆盖及线程分析功能。
Java和J2SE业务应用程序中的性能非常重要。当多个用户使用Java开发的应用程序时,应用程序的可靠性和伸缩性的就可能会给可用性带来风险,出现性能瓶颈、内存泄漏、进程以及未测试代码等问题。用户也不愿承担在系统体系结构上新的开销。
造成应用程序中的错误通常由于源代码在开发高性能过程中不能
执行最佳的操作。因此我们必须管理性能,管理风险。JProbe Suite 是Java最佳的性能协调软件件包,提供了高级的、高灵活性的Java应用程序协调。
JProbe主要功能:
轻松发现和消除性能瓶颈
查找问题代码
节省后续硬件及开发投入
增加应用发布信心
与开发过程集成,改善应用性能
JProbe Profiler JProbe Profiler内置了Call Graph调用关系图和高级数据采集机制,可实现方法和代码行级的高精度性能诊断。
主要功能:
方法和行级分析:确定方法的热点,并以逐行方式挖掘分析性能状态。
计算运行时间或CPU时间占用:跟踪用户体验或计算瓶颈;
9种指标:多角度确定问题根源;
高级过滤和触发器:确定要诊断分析的关键代码区域;
快照对比技术:预测代码修改对性能的影响;
高级打印和输出功能:支持PDF、文本、HTML或Excel兼容的CSV格式。
JProbe Memory Debugger
JProbe Memory DebuggerJProbe Memory Debugger可帮助开发人员快速查找Java代码的内存泄露和对象循环。内置的图形化实时内存使用和对象视图,有助于开发人员理解应用的内存使用,设法减少内存消耗以提高应用性能。
主要功能:
识别内存泄漏:通过易用的两步分析,跟踪运行时的内存增长;
Memory Instance Calculator:计算内存泄露量;
智能化内存分析:通过Leak Doctor发现可能的内存泄露源;
Aggregate Memory Footprint:理解对象创建的实际开销;
Reference Graph 和 Instance Detail:跟踪内存使用和对象引用;
垃圾回收分析:检测过多的短期对象和垃圾收集详情;
Snapshot 比对:确定代码改变对内存使用的影响。
JProbe Coverage
JProbe Coverage 帮助开发人员查找未执行代码,精确计算已执行代码,简化对测试工作可靠性和精确度的评估。
主要功能:
Coverage Browser 和 Source Views:迅速确定未测试代码或死代码;
Conditional Coverage Analysis: 分析特定条件所覆盖的代码范围,包括含有多个条件语句的代码行;
Filter Catch Blocks: 更精确的覆盖范围报告;
批处理模式: 可通过批处理方式运行,简化与夜间编译/测试系统的整合;
报表功能: 以XML、纯文本、CSV或者HTML格式输出覆盖范围报告,以实现个性化的分析;
Snapshot合并: 对多次运行中的覆盖范围数据进行合并;
JProbe Suit可与下列应用服务器整合
BEA WebLogic Server
IBM WebSphere Application Server
Sun Java System Application Server
Apache Tomcat
Oracle9i Application Server
JBoss
Macromedia JRun
........
JProbe Suit可与下列开发环境整合
IBM WebSphere Studio Application
Developer (WSAD)
Eclipse
Borland JBuilder
IntelliJ IDEA
Sun Java Studio
JBoss
Oracle Jdeveloper
JProbe Suit支持下列操作系统
Windows NT/2000/XP/2003
Linux 32 and 64-bit
HP-UX, 32- and 64-bit
z/OS, Linux on zSeries
JProbe Suit支持下列JDK
JDK 1.2.2, 1.3.x,1.4.x and 1.5.x
注:并非支持所有平台的JDK
详细资料请参考:http://www.innovatedigital.com/JavaTuning/JProbeSuite.shtml
该产品已于2013年退出市场
二.安装:
      1.下载安装包:JProbeforWindowsEXEFormat_810.zip文件
      2.解压zip文件,jprobe810_install.exe文件
      3.点击jprobe810_install.exe安装,跳过输入license文件
三.破解:
     1.下载破解文件
          2.复制client-support.jar文件放在D:\Program Files\JProbe 8.1\ lib目录下
          3.运行jprobe ,添加jprobe-suite.license文件
四.使用介绍:

Jprobe使用说明记录

一、总述

    当多个用户使用java开发的应用程序时,应用程序的可靠性和伸缩性就可能会给可用性带来风险,出现性能瓶颈、内存泄漏、进程已经为测试代码等问题。只可以利用与java涉及的解析器。内容包括:性能分析、内存纠错、代码覆盖、线程分析。

   功能:

1.      轻松发现和消除性能瓶颈;

2.      查找问题代码;

3.      节省后续硬件的开打投入;

4.      与开发过程集成,改善应用性能。

二、分析工具选择

   它取决与你在你的应用中遇到问题的类型。

1.      如果你的应用比较猛烈的,你可以先用记忆分析器(Memory analysis);

2.      如果你的应用是需要挂起的,一个可以进行死锁分析的性能分析器(Performance)是一个比较好的开始。

3.      如果你的应用比较迟钝,我们将安逸利用一个记忆分析器跟随一个性能分析器。因为,一个内存泄漏最终会引起服务器运行猛烈。所以,你将首先提出这个问题。在你的代码在整个应用环境中运行工作后,性能分析器可以帮助你调整(测试)你的应用是如何走的。

4.      覆盖分析(corverage analysis)可以在任何时候起作用。

三、JProbe MemoryDebugger

记忆分析器是可以帮助开发人员快速查找java代码的内存泄漏和对象循环。内置的图形化实时内存使用和对象试图,有助于开打人员理解应用的内存使用,设法减少内存消耗以提高应用性能。

记忆分析工具可以帮助你在你的JAVA应用中去改善内存使用,减少不必要垃圾收集。当你运行的时候,你用运行时间摘要视图查看整体记忆方案的行为,找出导致内存泄漏或者内存溢出的类。之后你利用一个记忆快照捕获输入的数据,再用堆调查工具,从视图引用开始,分析鉴定泄漏例子,然后找到他们被分配的地方或者找到导致内存溢出的源对象。

3.1主要功能:

1.              识别内存泄漏:通过医用的两份分析,跟踪运行时的内存增长。Memory Instance Caculator(计算内存泄漏量)

2.              智能化内存分析:通过Leak Doctor发现可能的内存泄漏;

3.              Aggregate  Memory Footprint:理解对象创建的实际开销;

4.              Reference Graph 和 Instance Detail:跟踪内存使用和对象引用;

5.              垃圾回收分析:检测过多的短期对象和垃圾及详情;

6.              Snapshot比对:确定代码改变对内存使用的影响。

3.2使用步骤及说明:

1.创建记忆分析案例。

(1)进入JProbe Console。

(2)点击按钮。进入下图。

(3)选择下的。点击【add】按钮。

      说明:本机测试环境使用的是tomcat 6.0。

(4)选择所选择tomcat路径,点击【next】按钮。

(5)选择Java jdk路径,点击【next】。

 说明:测试自己所写java程序时使用。

 

(6)持续点击【next】按钮。

说明:在使用Memory分析器时,此处可以为空。如果filter下有所测试的文件包,那么在运行时,memory则会跳过记录该文件包下的代码。说明:此处可以选择分析器种类。我直接选择memory,点击【next】按钮。

说明:本图中,“JProbe Options”在大部分分析测试中可置空,但是他是有用的,你可以通过它来更改创建快照的目录。

(7)输入信息完成。

说明:此处可以查看所选择的限制信息。点击【save】按钮。

(8)保存项目信息jpl文件,路径可以指定。

(8)设置完成。选择“Integer”,点击【Finnish】按钮。

说明:Continue表示重新输入设置信息;Integer表示设置完成。

(9)创建JProbe 启动TOMCAT脚本路径。点击【save】按钮。

(10)开始运行。点击【close】按钮。Memory运行。

2.代码录制

    (1) 在上一部分中的(10)进行完成后.点击下图中的.

(2)之后出现如下图.”Host Name/IP Address”输入所监控的tomcat的IP,本地直接用“localhost”。点击[确定]按钮。

(3)开始监控。

3.内存监控数据分析

内存分析工具主要有以下三个:MemoryPools Tab、GC Date Tab、Heap Date Tab。

(1)       Memory Pools

MemoryPools展现的是内存的历史使用和内存池的共同可用内存,可用部分是内存池所有可用部分的总和.当你运行一个session时,概括图形表现的是堆内存默认的大小。

点击,可以配置堆池或者非堆池。堆池(heap pools)包括的是在java中通常就可以发现的事情,比如java对象。非堆池(Non-heap)通常包括的是JVM内部调用的东西,比如编译提示的方法代码或者类信息。

点击此处,可以切换图形统计时间。可以同步到GC tab。

Heap pools:

TenuredGen是一直存在的旧的存在;

EdenSpace 和 Survivor Space共同代表新的产生。Eden Space表示生成代码时调用的内存;SurvivorSpace表示还在使用得内存,存活的代码调用。

AvailableMemory用来表示,已经使用的和待使用的之间的差异。

Non-heap:

Codecache:还在缓冲储存区中的代码

Permgen:正在调用的代码。

(2)       GC data

GCdata包括一个图形和一个表。图像表示的是当应用发生时,每种类型的垃圾回收。图形表示垃圾回收与程序运行时经过的时间百分比。如果百分比过大,您可能需要调整GC配置,或者减少对象循环。表提示的是每次垃圾回收故障之间的时间间隔等。

JProbe依赖于JRE,骨灰存在垃圾回收情形。GC采用copy内存,只会记录活动的项目内存,放在指定内存的位置。在程序运行后会产生一些活动的项目,也占有一定内存,这是GC会清理不活动项目,垃圾回收。

(3)       Heap Data

   调查表将选出调用占有率最高的五个类别。每个类别可以通过直接点击进入查看。

   Heap Date包括以下一类型:

1.  Recorded Count

2.  Recorded Memory

3.  Heap Count

4.  Heap Memory

5.  Dead COUNT

6.  Dead Memory

Recorded count/ Recorded Memory :在随后的仕途中查看已记载过的数据;

Heap Count/Heap Memory:在随后的视图中查看输入的堆数据;

Dead Count/Dead Memory:在随后的视图中查看垃圾数据。之后点击颜色说明,可查看该垃圾数据的痕迹;

Record Count/Record Memory:查看其详情;

Heap Count/Heap Memory:考虑在堆中的所有例子,而不是仅仅看见的记录。

       点击按钮,查看运行调用到的类。

Interacting with the MemoryRuntime Summary View

交互记忆运行时间摘要视图

(1)       Display non-heap data:展示非堆数据,点击按钮,可以选择非堆选项。这项操作不是对所有JVMs有影响。

(2)       修改垃圾回收和内存池的时间间隔:点击

(3)       改变数据记录水平或加一个滤波器:点击,打开记录水平对话框,修改收集选择信息类型,或者申请滤波器来指定表中的范围

(4)       在堆页中显示运行时间的数据。点击;

(5)       申请一个堆的垃圾回收:点击,结果可以在GCTAB里面查看。

(6)       拍照:点击,等待左上角出现拍照记录,之后可以点击记录,查看拍照数据,进行分析。

(7)       查看执行日志:点击,查看运行记录日志数据。

(8)       创建报表:点击,可以导出运行数据报表。

(9)       将图表保存为PNG或者JPEG文件。将鼠标点击到需要保存图片的图表上,右键选择要保存的图片类型。以及保存的图片的位置。

(10)   导出数据到CVS格式:将鼠标点击到需要保存图片的图表上,右键选则exportto CVS,在导出对话空选择位置,名称等。导出后,可用excel查看数据。

拍照分析:

      快照一般包括以下数据:JVM的堆(包括所用用例、他们的关系、以及他们关系的对象);特定用例的记录数据(当地时间、遗迹、被回收的用例)。这些信息取决于初始时对记录项的选择。

1.  点击,若其变为,则表示正在拍照中。

2.  拍照成功后,双击左上角的快照名称,等待生成快照数据。选择拍照的数据越少,速度也也快,也越容易分析。

3.  拍照成功后,得到以下图片

5.      选择需要查看的类,点击,得到该类详情,如下图。

6点击,查看关系图。

四、JProbePerformance

JProbe Performance主要用来查看内存使用情况和流线型垃圾回收。资深开发工程师一般在程序开发的最后阶段使用Performance,用来提高程序的效率。Performance在程序中最大的亮点就是帮助你确定程序的瓶颈,比如运算太慢或者过程太长导致的阻塞等。要分析方案运行结果,你必须是一个拥有深厚的构建知识,并且能够预见方案的行为的资深软件开发师。

This information displaysin several Performance views including the Call Graph, Method Detail, SnapshotDifference, and Performance Report.

在设置Performance时,前面的设置于Memory类似。但是下图中的数据必须全部填写。

1.             general:分为两部分Timing和deadlockdetection,及基准时间与死锁发现。Timing时间基准可以选择elapsed(程序经过的时间)或者CPU;deadlockdetection可选择也可以不选择。

2.             filters:选择监控的代码包或者方法等;此部分的代码需要在前面设置;

3.             automation:选择关联到的方法。

代码录制级别:

Data recording off:在开始调查程序的时候,你是不知道程序的性能瓶颈的,但是这个程度就已经够找到性能瓶颈了;

No Encapsulation:只能够收集到filters里面的方法代码;

Grouped Encapsulation:可以收集到你的方法数据以及方法调用到的编译数据;

Full Encapsulation:收集到所有方法,以及方法所调用到的方法。

除非你选择“data recording is off”,否则一旦你点下OK,那么数据就开始记录。

设置好,运行后,进入performance运行窗口。

Performance页只包括Memory pools 和GC data 两部分。

利用performance的第一步是保存基准照片(数据)即Saving Baseline Snapshots。在做压力测试时,最重要的就是发现程序瓶颈。此问题可以在这里得到实现。

首先,建立一个基准数据(照片)。运行一个正常的步骤,一个用户就可以了。然后拍照,作为基准数据;(你可以多运行几次,用一个差不多稳定的作为基准)

然后,捕捉压力性能测试时的数据(照片)。在程序运行压力测试时,拍照。

最后,对比基准数据与性能测试时的数据,以此来找到程序的性能瓶颈。

具体操作为,右键需要对比的照片,点击其“snapshot Differencing…”,然后会出现对话框:选择基准数据与对比数据。

选择完成之后,点击【ok】按钮。出现对比类的对比数据列表。

基准计较类型:

1.      number of calls:方法被调用的次数;

2.      method time:方法持续花费的时间,不包括调用的其他方法花费的时间;

3.      number of catches:达到例外的方法次数;

4.      Number of Exception Exits:排除特例的方法次数。

三准途径签定潜在瓶颈:

一、寻找麻烦关键点;点击照片右键选择“open call graph view”,根据自己的经验判断哪些数据有可能有问题。

二、寻找麻烦关键点的关键路径;

三、利用导航图(Navigating the Call Graph)寻找麻烦关键点。

五、JProbe Coverage

    覆盖分析器可以帮助开发人员查找为执行代码,精确计算一致性代码,简化对测试工作可靠性和精确度的评估。但是,他不可以分析代码循环。

5.1主要功能:

1.      Coverage Browser和Source Views:迅速确定为测试代码和死代码;

2.      Conditional Coverage Analysis:分析特定条件所覆盖的代码范围,包括含有多个条件语句的代码行;

3.      Filter Catch Blocks:更精确的覆盖范围报告;

4.      批发处理模式:可通过批处理方式运行,简化夜间编译/测试系统的整合;

5.      报表功能:以XML、纯文本、CSV或者HTML格式输出覆盖范围报告,以实现个性化的分析;

6.      Snapshot合并:对多次运行中的覆盖范围数据进行合并。

5.2使用步骤及说明:

Coverage 配置方式与Performance类似。

    代码覆盖测试一般以以下为默认设置。

• General > Line:JProbe tracks which lines of code in your application are called

during your test case.Conditions are not tracked.按行追踪应运,但是条件不追踪。

• Filters: JProbe usesyour application filters as the default data collection filters.以配置的我的代码文件夹部分作为漏斗。

• Automation >Initial Recording at JVM Start: Data Recording On.

 (1)配置完成后,直接点击开始运行。进入以下窗口

(2)拍照或者,停止运行后系统自动拍照。双击所拍的照片。

 


0 0
原创粉丝点击