1  前言

  回答之前先让我们来看看什么是jProfiler:JProfiler是一个商业授权的Java剖析工具,由EJ技术有限公司,针对Java EE和Java SE应用程序开发的。它允许两个内存剖面评估内存使用情况和动态分配泄漏和CPU剖析,以评估线程冲突。JProfiler直觉式的GUI让你可以找到性 能瓶颈、抓出内存漏失(memory leaks)、并解决执行绪的问题。[from 百度百科]

简而言之,它能通过评估CPU、内存以及线程来避免内存漏失,是一个性能监测工具。

  试想,我们发布在服务器上的项目如何测试其健壮性以及可行性?如何做出一个合格放心的产品来?我给出的答案是在负载测试下进行数据收集和数据监控,调整你的代码或者配置使你的项目运行状况达到最优。

2 如何开始

  Step 1,到EJ的项目主页下载最新版的JProfiler。

笔者这里有一个JProfiler7的License Key:L-J7-feng#1000-289nsew356eehq#9163,填写密钥时name和company随便填就好了[分享即是美德]。假如密钥失效,安装后有免费的10天试用期,选中“Evaluation”表示评估试用即可。

  

package jProfiler;

public class Test extends Thread{
public static void main(String[] args) throws InterruptedException {
Test t = new Test();
for(int i=1; i<10000; i++) {
new HelloWorld();
t.sleep(100); // 休眠100毫秒
}
}
} class HelloWorld {
public HelloWorld() {
System.out.println("Hello Jayzee!");
}
}

你也可以点"Show Services"进行手动刷新,JProfiler会自动帮你捕获运行中的java程序)。

  

  

  

  

  

  

  假设你手头上有个项目是要发布在tomcat服务器上的,例如笔者手头上的项目名称是DSPMSU_For_Display,tomcat服务器是7.x版本,下面我们讲解如何对这个本地的tomcat7服务器进行监控,细节如下:

  点击Session→Integration Wizards→New Server Integration→Apache Tomcat 7.x→On this computer→勾选你的JVM信息→Waif for a connection from the JProfiler GUI(就是由JProfiler帮你启动tomcat)→选着你的startup.bat→保持默认端口8849→启动。  

  1. 你在JProfiler中保存的这个session,如果你双击运行它,它的实质也是去调用startup.bat来启动,因此假如你已经手动启用了tomcat然后又在JProfiler启动这个session,这时候就会报错--端口被占用;

  2. 监控过程中,假如tomcat意外关闭,这时候会报下面这样一个错误,错误提示你要勾选"Keep VM alive",在Start Center编辑你保存的session→Profiling Settings选项卡→Customize Profiling Settings→Miscellaneous→Keep VM alive即可。

3.1 直观认识

  请先花几分钟看看这篇博文:JProfiler学习笔记

  .

  .

  .

  几分钟很快就过去了,让我们做以下几个总结:

  

  

  

  

  

  

  模块的介绍主要是对JProfiler的具体功能进行介绍,部分内容参照自博客:JProfiler 解决 Java 服务器的性能跟踪,如果读者英文阅读能力比较强也可以在工具栏上边点击Help,直接阅读英文帮助,下文部分内容亦是参照自英文API。

3.2.1 内存视图 Memory Views

  

所有对象 All Objects
显示类或在状况统计和尺码信息堆上所有对象的包。你可以标记当前值并显示差异值。

  • 记录对象 Record Objects 
    显示类或所有已记录对象的包。你可以标记出当前值并且显示差异值。
  • 分配访问树 Allocation Call Tree 
    显示一棵请求树或者方法、类、包或对已选择类有带注释的分配信息的J2EE组件。
  • 分配热点 Allocation Hot Spots 
    显示一个列表,包括方法、类、包或分配已选类的J2EE组件。你可以标注当前值并且显示差异值。对于每个热点都可以显示它的跟踪记录树。
  • 类追踪器 Class Tracker 
    类跟踪视图可以包含任意数量的图表,显示选定的类和包的实例与时间。

3.2.2 堆遍历 Heap Walker

  

类 Classes 
显示所有类和它们的实例,可以右击具体的类"Used Selected Instance"实现进一步跟踪。

  • 分配 Allocations 
    为所有记录对象显示分配树和分配热点。
  • 索引 References 
    为单个对象和“显示到垃圾回收根目录的路径”提供索引图的显示功能。还能提供合并输入视图和输出视图的功能。
  • 时间 Time 
    显示一个对已记录对象的解决时间的柱状图。
  • 检查 Inspections 
    显示了一个数量的操作,将分析当前对象集在某种条件下的子集,实质是一个筛选的过程。
  • 图表 Graph
    你需要在references视图和biggest视图手动添加对象到图表,它可以显示对象的传入和传出引用,能方便的找到垃圾收集器根源。

  

3.2.3 CPU 视图 CPU Views

  JProfiler 提供不同的方法来记录访问树以优化性能和细节。线程或者线程组以及线程状况可以被所有的视图选择。所有的视图都可以聚集到方法、类、包或J2EE组件等不同层上。CPU视图部分包括:

访问树 Call Tree 
显示一个积累的自顶向下的树,树中包含所有在JVM中已记录的访问队列。JDBC,JMS和JNDI服务请求都被注释在请求树中。请求树可以根据Servlet和JSP对URL的不同需要进行拆分。

  • 热点 Hot Spots 
    显示消耗时间最多的方法的列表。对每个热点都能够显示回溯树。该热点可以按照方法请求,JDBC,JMS和JNDI服务请求以及按照URL请求来进行计算。
  • 访问图 Call Graph 
    显示一个从已选方法、类、包或J2EE组件开始的访问队列的图。
  • 方法统计 Method Statistis
    显示一段时间内记录的方法的调用时间细节。

3.2.4 线程视图 Thread Views

  

线程历史 Thread History 
显示一个与线程活动和线程状态在一起的活动时间表。

  • 线程监控 Thread Monitor 
    显示一个列表,包括所有的活动线程以及它们目前的活动状况。
  • 线程转储 Thread Dumps 
    显示所有线程的堆栈跟踪。

3.2.5 监控器视图 Monitor Views

  

当前锁定图表 Current Locking Graph 
显示JVM中的当前锁定情况。

  • 当前监视器 Current Monitors 
    显示当前正在等待或阻塞中的线程操作。
  • 锁定历史图表 Locking History Graph 
    显示记录在JVM中的锁定历史。
  • 监控器历史 Monitor History 
    显示等待或者阻塞的历史。
  • 监控器使用统计 Monitor Usage Statistics 
    计算统计监控器监控的数据。

3.2.6 VM遥感勘测技术视图 VM Telemetry Views

  

内存 Memory 
显示堆栈的使用状况和堆栈尺寸大小活动时间表。

  • 记录的对象 Recorded Objects 
    显示一张关于活动对象与数组的图表的活动时间表。
  • 记录的生产量 Recorded Throughput 
    显示一段时间累计的JVM生产和释放的活动时间表。
  • 垃圾回收活动 GC Activity
    显示一张关于垃圾回收活动的活动时间表。
  • 类 Classes 
    显示一个与已装载类的图表的活动时间表。
  • 线程 Threads 
    显示一个与动态线程图表的活动时间表。
  • CPU负载 CPU Load 
    显示一段时间中CPU的负载图表。

3.3.1 看内存图

如果你发现内存图中可用内存随着时间的流逝一直在上升而没有GC回收的动作,那么你就要怀疑它是否存在着内存泄露了;

  Key 3,追踪主要使用Heap Walker的各项功能,各功能具体能做何种分析请复习章节3.1直观认识和3.2.2
堆遍历 Heap Walker。

JProfiler的更多相关文章

  1. 部署JProfiler监控tomcat

    下载JProfiler包 wget http://download-keycdn.ej-technologies.com/jprofiler/jprofiler_linux_9_2.rpm 安装JPr ...

  2. Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试

    本文是本人前一段时间做一个简单Java监控工具调研总结,主要包括VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,以及对Java微基准测试的简单介绍, ...

  3. 转载:JProfiler远程监控LINUX上的Tomcat过程细讲

    来源于xuwanbest的博客   所谓"工欲善其事,必先利其器",好的工具确能起到事半工倍的作用.我用到的最多的就两个JConsole 和JProfiler .JConsole监 ...

  4. JProfiler 8下载地址和注册码

    JProfiler---- 一个很好的java性能监控工具,现在附上下载地址和注册码,此破解版仅供学习交流使用, 其他用途请购买正版授权!!!windows x64 zip下载地址:http://do ...

  5. JProfiler学习笔记

    JProfiler学习笔记   一.安装JProfiler        从http://www.ej-technologies.com/下载5.1.2并申请试用序列号   二.主要功能简介 1.内存 ...

  6. jprofiler安装图解

    环境: 1.sun jdk1.6.0 2.jprofiler_windows_6_0_2.exe 安装 1. jdk, 安装略... 2. jprofiler安装 一路next 到Enter lice ...

  7. 循序渐进 Jprofiler

    一 Jprofiler 1 什么是Jprofiler JProfiler是一个全功能的Java剖析工具(profiler),专用于分析J2SE和J2EE应用程式.它把CPU.线程和内存的剖析组合在一个 ...

  8. JProfiler使用入门(一)——准备工作

      JProfiler是一个全功能的Java剖析工具(profiler),主要用于检查和跟踪系统(限于Java开发的)的性能. JProfiler可以通过时时的监控系统的内存使用情况,随时监视垃圾回收 ...

  9. JProfiler使用详细教程学习笔记

    JProfiler学习笔记    推荐文章:JProfiler 入门教程 一.安装JProfiler        从http://www.ej-technologies.com/下载5.1.2并申请 ...

随机推荐

  1. 错误解决:SharePoint Designer 2010编辑后,出现数据源控件未能执行插入命令,data source control failed to execute the insert command

    打了SharePoint 2010 最新的SP 2的补丁,但是使用SharePoint Designer 2010 定义任何一个列表的“插入视图”时,总是出现标题那样的错误: 数据源控件未能执行插入命 ...

  2. iOS多线程中,队列和执行的排列组合结果分析

    本文是对以往学习的多线程中知识点的一个整理. 多线程中的队列有:串行队列,并发队列,全局队列,主队列. 执行的方法有:同步执行和异步执行.那么两两一组合会有哪些注意事项呢? 如果不是在董铂然博客园看到 ...

  3. Quartz2D复习(一)--- 基础知识 / 绘制线段圆弧 / 图片水印 / 截图

    1.Quartz 2D是一个二维绘图引擎,同时支持ios和Mac系统: Quart2D的API是纯C语言的,API来自于Core  Graphics框架: 2.Quartz 2D可以绘制图形(线段/三 ...

  4. iOS之属性修饰符 retain、strong和copy区别测试

    时不时会有点迷惑属性修饰符retain.strong.copy三者之间的区别,还是把测试过程记录下来好一点! 1.属性修饰符结论 2.给retain.strong.copy修饰的字符串属性赋值指针变化 ...

  5. C阶段【02】 - 分支结构

    知识重点: BOOL布尔类型 关系运算符 逻辑运算符 if语句 枚举类型 switch语句 一.BOOL布尔类型 用来存储“真”或者“假”,变了只有YES和NO两个值.YES(1)表示表达式结果为真, ...

  6. CYQ.Data 数据框架 使用篇一 入门指南

    快速使用帮助 | 回贴(13) | 浏览(11303) | 发表日期 :2010-12-20 20:12:29   #楼主   本文针对V5版本进行修改于(2016-07-04) 下面是使用步骤: 一 ...

  7. apache 日志轮询 linux cronolog

    Linux下运行的Web服务器Apache,默认日志文件是不分割的,一个整文件既不易于管理,也不易于分析统计.安装cronolog后,可以将日志文件按时间分割,易于管理和分析. cronolog安装配 ...

  8. Mongodb Manual阅读笔记:CH7 索引

    7索引 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔记 ...

  9. Sql Server之旅——终点站 nolock引发的三级事件的一些思考

    曾今有件事情让我记忆犹新,那年刚来携程不久,马上就被安排写一个接口,供企鹅公司调用他们员工的差旅信息,然后我就三下五除二的给写好 了,上线之后,大概过了一个月...DBA那边报告数据库出现大量锁超时, ...

  10. 【转载】CentOS 6.3下rsync服务器的安装与配置

    一.rsync 简介 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录. Rsy ...