JVM学习-Jprofiler

JProfiler

基本概述
特点
  • 使用方便,界面操作友好
  • 对被分析的应用影响小(提供模板)
  • CPU,Tread,Memory分析功能尤其强大
  • 支持对jdbc,noSql,jsp,servlet,socket进行分析
  • 支持多种模式(离线、在线)的分析
  • 支持监控本地、远程JVM
  • 跨平台,拥有多种操作系统版本
主要功能
  • 方法调用:对方法调用的分析可以帮助您了解应用程序在做什么,并找到提高其性能的方法
  • 内存分配:通过分析堆上对象、引用链和垃圾收集能帮您修复内存泄漏问题,优化内存使用
  • 线程和锁:JProfiler提供多种针对线程和锁的分析视图帮助您发现多线程问题
  • 高级子系统:许多性能问题都发生在更高的语义级别上,如对于JDBC调用,可能希望找出执行最慢的SQL语句,JProfiler支持对这些子系统进行集成分析
具体使用
数据采集方式
  • Instrumentation重构模式:这是JProfiler的全功能模式,在class加载之前,JProfiler把相关功能代码写入到需要分析的class的bytecode中,对正在运行的JVM有一定影响
    • 优点:功能强大,在此设置中,调用堆栈信息是准备的
    • 缺点:若分析的class较多,则对应用的性能影响较大,CPU开销可能很高(取决于Filter控制),因此使用此模式一般配合Filter使用,只对特定类或包进行分析
  • Sampling抽样模式:类似于样本统计,每隔一定时间(5ms)将每个线程中方法栈的信息统计出来
    • 优点:对CPU的开销非常低,对应用影响小(即使不配置任何Filter)
    • 缺点:一些数据/特性不能提供
  • JProfiler本身没有指出数据的采集类型,这里的采集类型是针对方法调用的采集类型,因为JProfiler的绝大多数核心功能都依赖方法调用采集的数据,所以可直接认为是JProfiler的数据采集类型
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
遥感监测Telemetries
内存视图 Live Memory

在这里插入图片描述

  • class/class instance相关信息,例如对象的个数,大小,对象创建的方法执行栈,对象创建的热点
    • 所有对象All Objects–显示所有加载的类的列表和在堆上分配的实例数
    • 记录对象Record Objects–查看特定时间段对象的分配,并记录分配的调用堆栈
    • 分配访问树Allocation Call Tree–显示一棵请求树或者方法,类,包或对已选择类有带注释的分配信息的J2EE组件
    • 分配热点Allocation Hot Spots–显示一个列表,包括方法,类,包或分配已选类的J2EE组件,可以标注当前值并显示差异值,对于每个热点都可以显示它的跟踪记录树
    • 类追踪器Class Tracker–类跟踪视图可以包含任意数量的图表,显示选定的类和包的实例与时间
    • 分析内存情况
      • 频繁创建的Java对象:死循环,循环次数过多
      • 存在大对象,读取文件时,byte[]应该边读边客情,如果长时间不写,导致byte[]过大
      • 存在内存泄漏
堆遍历 Heap Walker

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

CPU视图 CPU views
  • 类Classes:显示所有类和它们的实例,可以右键具体类“Used Selected Instance”实现进一步跟踪
  • 分配Allocations:为所有记录对象显示分配树和分配热点
  • 索引References:为单个对象和“显示到垃圾回收根目录的路径”提供索引图的显示功能,还能提供合并输入视图和输出视图的功能
  • 时间Time:显示一个对已记录对象的解决时间的柱状图
  • 检查Inspections:显示一个数量的操作,将分析当前对象集在某种条件下的子集,实质是一个筛选过程
  • 图表Graph:需要在references视图和biggest视图手动添加对象图表,它可以显示对象的传入和传出引用,能方便找到垃圾收集器根源
  • 在工具栏点击“Go To Start”可以使堆内存重新计数,也就是回到初始状态
    在这里插入图片描述
线程视图 Threads
  • JProfiler通过对线程历史的监控判断其运行状态,并监控是否有线程阻塞产生,还能将一个线程所管理的方法以树状形式呈现,对线程剖析
    • 线程历史 Thread History:显示一个与线程活动和线程状态在一起的活动时间表
    • 线程监控Thread Monitor:显示一个列表,包括所有的活动线程以及它们目前的活动状况
    • 线程转储Thread Dumps:显示所有线程的堆栈跟踪
      在这里插入图片描述
      在这里插入图片描述
监视器&锁 Monitors&Locks
  • 所有线程持有锁的情况以及锁的信息
  • 观察JVM的内部线程并查看状态
    • 死锁探测图表 Current Locking Graph:显示JVM中的当前死锁图表
    • 目前使用的监测器 Current Monitor:显示目前使用的监测器并且包括它们的关联线程
    • 锁定历史图表 Locking History Graph:显示记录在JVM中的锁定历史
    • 历史检测记录 Monitor History:显示重大的等待事件和阻塞事件的历史记录
    • 监控器使用统计 Monitor Usage Statistics:显示分组监测,线程和监测类的统计监测数据
      在这里插入图片描述
      在这里插入图片描述
  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JProfiler是一个重量级的JVM监控工具,用于对JVM进行精确监控和定位系统瓶颈。它提供了堆遍历、CPU剖析、线程剖析等功能,可以帮助开发人员统计压测过程中的监控数据并定位性能问题。 下面是安装和使用JProfiler的两种方式: 方式一:通过IDEA插件安装 1. 打开IntelliJ IDEA,点击菜单栏的 "File",选择 "Settings" 2. 在 Settings 窗口中,选择 "Plugins",然后点击 "Browse repositories" 3. 在搜索框中输入 "jprofiler",找到并选择 JProfiler 插件,点击 "Install" 安装 4. 安装完成后,重启 IDEA,JProfiler 插件会自动加载并出现在工具栏中,点击图标即可开始使用 方式二:手动下载并安装插件 1. 从 JProfiler 官方网站(https://plugins.jetbrains.com/plugin/253-jprofiler)下载对应版本的插件 2. 解压下载的压缩包,得到 JProfiler 文件夹 3. 打开 IDEA,将 JProfiler 文件夹复制到 IDEA 的自定义插件目录,默认路径为 C:\Users\YourUserName\.IntelliJIdea2017.2\config\plugins 4. 重启 IDEA,JProfiler 插件会自动加载并出现在工具栏中,点击图标即可开始使用 无论采用哪种方式安装,一旦 JProfiler 插件成功加载,它会自动弹出 JProfiler 窗口,你可以在这个窗口中进行代码性能监控和分析。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [JProfiler的安装和使用](https://blog.csdn.net/vicky_pyh/article/details/88797514)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值