目录

一、概述

二、两种数据采集方式

三、VM遥感监测视图中相关监测数据

四、内存视图(Live Memory)的分析

五、Heap Walker功能说明

六、CPU视图功能说明

七、Threads视图功能说明


一、概述

在运行Java的时候有时候想测试运行时占用内存情况,这时候就需要使用测试工具查看了。在eclipse里面有 Eclipse Memory Analyzer tool(MAT)插件可以测试,而在IDEA中也有这么一个插件,就是JProfiler。JProfiler 是由 ej-technologies 公司开发的一款 Java 应用性能诊断工具,功能强大,但是收费。

特点:

  • 使用方便、界面操作友好(简单且强大);
  • 对被分析的应用影响小(提供模板);
  • CPU,Thread,Memory分析功能尤其强大;
  • 支持对jdbc,noSql,jsp,servlet,socket等进行分析;
  • 支持多种模式(离线,在线)的分析;
  • 支持监控本地、远程的JVM;
  • 跨平台,拥有多种操作系统的安装版本;

主要功能:

  • 1-方法调用:对方法调用的分析可以帮助您了解应用程序正在做什么,并找到提高其性能的方法;
  • 2-内存分配:通过分析堆上对象、引用链和垃圾收集能帮您修复内存泄露问题,优化内存使用;
  • 3-线程和锁:JProfiler提供多种针对线程和锁的分析视图助您发现多线程问题;
  • 4-高级子系统:许多性能问题都发生在更高的语义级别上。例如,对于JDBC调用,您可能希望找出执行最慢的SQL语句。JProfiler支持对这些子系统进行集成分析;

官网地址:Java Profiler - JProfiler

二、两种数据采集方式

  • Instrumentation(重构模式)

这是JProfiler全功能模式。在class加载之前,JProfier把相关功能代码写入到需要分析的class的bytecode中,对正在运行的jvm有一定影响。

  1. 优点:功能强大,在此设置中,调用堆栈信息是准确的。
  2. 缺点:若要分析的class较多,则对应用的性能影响较大,CPU开销可能很高(取决于Filter的控制)。因此使用此模式一般配合Filter使用,只对特定的类或包进行分析。
  • Sampling(样本采集)

类似于样本统计,每隔一定时间(5ms)将每个线程栈中方法栈中的信息统计出来。

  1. 优点:对CPU的开销非常低,对应用影响小(即使你不配置任何Filter);
  2. 缺点:一些数据/特性不能提供(例如:方法的调用次数、执行时间);

注:JProfiler本身没有指出数据的采集类型,这里的采集类型是针对方法调用的采集类型。因为JProfiler的绝大多数核心功能都依赖方法调用采集的数据,所以可以直接认为是JProfiler的数据采集类型。

如下图,当我们打开JProfiler时,会弹出选择哪一种数据采集方式:

下图是样本抽样采集方式:

三、VM遥感监测视图中相关监测数据

【a】概览:展示内存、GC、类、线程、CPU等使用情况 

【b】内存:可以选择不同内存区域查看其使用情况,使用不同颜色区分空闲内存和已使用内存

【c】GC:显示垃圾回收活动,包括对象释放的一条线和对象移动的一条线

 【d】类信息:显示 JVM调用的类的总,分为过滤类和非过滤类

 【e】线程:显示 JVM中活着的线程总数,分为活动的线程和不活动的线程

 【f】CPU:展示CPU利用率变化情况

 四、内存视图(Live Memory)的分析

JProfiler 的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回收的对象。

(一)、所有对象 All Objects:显示所有加载的类的列表和在堆上分配的实例数。只有Java 1.5 (JVMTI)才会显示此视图。要查看特定时间段对象的分配,并记录分配的调用堆栈,请使用“记录的对象视图”。

有一个集合体等级选择器,你可以在以下几种类型中切换:

  1. 类(classes):每一行显示一个单独的类,这是默认的集合体类型
  2. 包(packages):每一行显示一个单独的包,子包不包含在内。在这个集合体等级内,表是树形的。你可以点击树节点,查看其包含的类
  3. J2EE组件( J2EE components):每一行是一个 J2EE组件。此模式类似类模式中的过滤器,能够让你快速检查应用中加载的 J2EE组件。 

(二)、记录对象 Record Objects:查看特定时间段对象的分配,并记录分配的调用堆栈。

记录的对象视图可以根据对象的活动状态进行过滤:

  1. 活动对象(Live objects) 只显示当前在内存中的对象;
  2. 垃圾回收对象(Garbage collected objects) 被显示被回收的对象;
  3. 活动的和垃圾回收对象(Live and garbage collected objects) 显示所有被创建的对象;

(三)、分配访问树 Allocation Call Tree:显示一棵请求树或者方法、类、包或对已选择类有带注释的分配信息的J2EE组件。

(四)、分配热点 Allocation Hot Spots:显示一个列表,包括方法、类、包或分配已选类的J2EE组件。你可以标注当前值并且显示差异值,对于每个热点都可以显示它的跟踪记录树。

(五)、类追踪器 Class Tracker:类跟踪视图可以包含任意数量的图表,显示选定的类和包的实例与时间。

五、Heap Walker功能说明

这个视图主要追踪应用程序运行过程中堆内存的使用情况,如下图:

【a】类(Classes):显示所有类和它们的实例 

【b】索引(References):为单个对象和“显示到垃圾回收根目录的路径”提供索引图的显示功能。还能提供合并输入视图和输出视图的功能

 六、CPU视图功能说明

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

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

(二)、热点 Hot Spots:显示消耗时间最多的方法的列表。对每个热点都能够显示回溯树。该热点可以按照方法请求,JDBC,JMS和JNDI服务请求以及按照URL请求来进行计算。

(三)、 访问图 Call Graph:显示一个从已选方法、类、包或J2EE组件开始的访问队列的图。

(四)、 方法统计 Method Statistis:显示一段时间内记录的方法的调用时间细节。

 七、Threads视图功能说明

JProfiler通过对线程历史的监控判断其运行状态,并监控是否有线程阻塞产生,还能将一个线程所管理的方法以树状形式呈现,方便对线程进行剖析。

(一)、线程历史 Thread History:显示一个与线程活动和线程状态在一起的活动时间表。按照线程开始的顺序显示 JVM中所有线程状态的详细历史信息在视图左手点,线程的名字固定显示,其它部分是滚动度量工具,在水平轴上显示时间。时间轴的开始时间与 JVM的第一个线程的时间保持一致。每个活动的线程用带颜色的线标明,从线程开始到线程结束。

  • 颜色标识线程的状态:
  1. 绿色:绿色表明线程正在运行并能接收 CPU时间。不表明线程正在消耗 CPU时间,只表明线程准备运行并且没有阻塞或睡眠。线程被分配了多少 CPU时间,依赖于不同的其它因素,如总的系统负载,线程优先级和调度的运算法则
  2. 橙色:橙色表示线程在等待。线程正在睡眠并等待计时器或其它线程唤醒
  3. 红色:红色表示线程阻塞。线程尝试进入同步代码区或由其它线程控制的同步方法
  4. 蓝色:亮蓝色表示线程在 Net I/O操作,线程在等待 JAVA库的网络操作完成。在线程监听 socket连接或者等待读写数据到 socket中时,会产生这种状态。

(二)、 线程监控 Thread Monitor:显示一个列表,包括所有的活动线程以及它们目前的活动状况。

显示的五列:

  1. Name:显示线程名称,如果线程没有被特别命名,则使用 JVM提供的名称。想让此视图更加有用,最好将你自己创建的线程使用 setName() 进行命名。
  2. Group:显示与此线程相关的线程组的名称
  3. Start time:示线程开始的时间,时间是根据 JVM中第一个线程创建的时间还计算的。
  4. Creating thread:显示线程的名字和创建此线程的线程组。
  5. Status:显示线程的状态,相当于线程历史视图中的状态报告

(三)、线程转储 Thread Dumps:显示所有线程的堆栈跟踪。

 线程分析主要关心三个方面:

1.web容器的线程最大数。比如:Tomcat的线程容量应该略大于最大并发数;

2.线程阻塞;

3.线程死锁;

JVM监控及诊断工具GUI篇之JProfiler相关推荐

  1. 性能监控与调优篇之【3. JVM 监控及诊断工具-GUI 篇】

    文章目录 3. JVM 监控及诊断工具-GUI 篇 3.1. 工具概述 3.2. JConsole 3.3. Visual VM 3.4. Eclipse MAT 3.5. JProfiler 3.6 ...

  2. JVM监控及诊断工具-GUI篇

    3.JVM监控及诊断工具-GUI篇 一.工具概述 使用上一章命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但它们存在下列局限: 1.无法获取方法级别的分析数据,如方法间的调用关系.各方 ...

  3. 20.JVM监控以及诊断工具-GUI篇

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 20. JVM监控及诊断工具-GUI篇 20.1. 工具概述 使用上一章命令行工具或组合能帮您获取目标Java应用性能相 ...

  4. 干货满满【JVM监控及诊断工具-GUI篇】

    [JVM监控及诊断工具-GUI篇] 3.1. 工具概述 使用上一章命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但它们存在下列局限: 1.无法获取方法级别的分析数据,如方法间的调用关系 ...

  5. JVM 学习笔记二十六、JVM监控及诊断工具-GUI篇

    二十六.JVM监控及诊断工具-GUI篇 1.工具概述 使用上一张命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但他们存在下列局限: (1)无法获取方法级别的分析数据,如方法间的调用关系 ...

  6. 第24章 JVM监控及诊断工具-GUI篇

    第24章 JVM监控及诊断工具-GUI篇 来自尚硅谷宋红康老师讲解的JVM:bilibili链接 1 工具概述 使用上一张命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但他们存在下列局 ...

  7. 15、JVM监控及诊断工具-GUI篇

    文章目录 第1章.工具概述 第2章.jConsole 1.基本概述 2.启动 3.三种连接方式 [1]Local [2]Remote [3]Advanced 4.主要作用 第3章.Visual VM ...

  8. JVM(二十二) -- 性能监控与调优(三) -- JVM监控及诊断工具--GUI篇

    1.工具概述 1.1 图形化总和诊断工具: JDK自带的工具 第三方工具 2. jConsole(了解) 从java5开始,在JDK中自带的java监控和管理控制台. 用于对JVM中内存.线程和类等的 ...

  9. <JVM下篇:性能监控与调优篇>03-JVM监控及诊断工具-GUI篇

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  10. Day357358359360.JVM监控及诊断工具-GUI -JVM

    JVM监控及诊断工具-GUI 实际中,你下面有1-2款会用即可 一.工具概述 二.JConsole 了解 1.基本概述 2.启动 在jdk安装目录中找到jconsole.exe,双击该可执行文件就可以 ...

最新文章

  1. 在BAE搭建的Django中实现图片上传并用jquery预览图片
  2. Spring Boot 启动可以有多快?
  3. 【深度学习】深入浅出transformer内部结构
  4. 转载:Linux下查看/修改系统时区、时间
  5. 暴富、投机,金钱、欲望、人性,一个叫 Fomo3D的游戏正在刷新你的世界观
  6. Spring4.X系列之AOP-@AspectJ
  7. C++ Primer 有感(类)
  8. 对于Eclipse的正确用法
  9. 利用for...in...遍历js数组与Python异同
  10. viper4android 魅族6,手机资讯导报:魅族自曝新旗舰PRO6摄像头不凸起
  11. Python 语言程序设计(5-1)函数的定义与使用
  12. 虚拟机(VMware Workstation)的使用方法(转)
  13. [bzoj1791][ioi2008]Island 岛屿(基环树、树的直径)
  14. Android RxJava2 浅析
  15. GPS导航知识——DGPS
  16. 刨根究底字符编码之四——EASCII及ISO 8859字符编码方案
  17. 电子设计入门——各种不同的GND怎么接
  18. 台式计算机怎样能搜无线连接,台式电脑怎么设置无线网络!台式电脑也能上wifi...
  19. 用 RNN 建立语言模型
  20. 实用前端标注图片剪裁工具-AILabel.js

热门文章

  1. 睡后收益 -- CSDN博客打赏功能及自定义模块以及代码分享
  2. 阿里云云计算 51 在线实验--安全中心初体验
  3. java 遍历文件夹 性能_Java函数式编程(十一):遍历目录
  4. 2021-09-13Top-N 推荐系统,通常指的是个性化推荐系统,有别于热门推荐。
  5. python元组遍历
  6. css 背景图 左右空白,缩小窗口时CSS背景图出现右侧空白BUG的解决方法
  7. 凸优化第二章凸集 2.2重要例子
  8. Deciding the Number of Clusterings
  9. 【洛谷 P3384】树链剖分【详解树链剖分】
  10. 对短链接服务暴露的URL进行网络侦察