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
监视器&锁 Monitors&Locks

待续… …

相关推荐

  1. 学习JVM

    2024-06-06 07:34:05       61 阅读
  2. <span style='color:red;'>JVM</span><span style='color:red;'>学习</span>

    JVM学习

    2024-06-06 07:34:05      51 阅读
  3. <span style='color:red;'>JVM</span><span style='color:red;'>学习</span>

    JVM学习

    2024-06-06 07:34:05      43 阅读
  4. <span style='color:red;'>jvm</span><span style='color:red;'>学习</span>

    jvm学习

    2024-06-06 07:34:05      30 阅读
  5. <span style='color:red;'>JVM</span><span style='color:red;'>学习</span>

    JVM学习

    2024-06-06 07:34:05      42 阅读
  6. <span style='color:red;'>JVM</span><span style='color:red;'>学习</span>

    JVM学习

    2024-06-06 07:34:05      28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 07:34:05       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 07:34:05       74 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 07:34:05       62 阅读
  4. Python语言-面向对象

    2024-06-06 07:34:05       72 阅读

热门阅读

  1. TCP/IP 接收发送缓存大小的自动调优 Auto Tuning

    2024-06-06 07:34:05       26 阅读
  2. 《解锁创意无限:Stable Diffusion 详细教程指南》

    2024-06-06 07:34:05       25 阅读
  3. 洛谷 P8740 [蓝桥杯 2021 省 A] 填空问题 题解

    2024-06-06 07:34:05       25 阅读
  4. folyd算法求最短路径

    2024-06-06 07:34:05       39 阅读
  5. AudioSet 本体与声音实体对象

    2024-06-06 07:34:05       25 阅读
  6. Android AAudio——C API创建AudioTrack(六)

    2024-06-06 07:34:05       25 阅读
  7. 力扣2831.找出最长等值子数组

    2024-06-06 07:34:05       27 阅读
  8. axios

    axios

    2024-06-06 07:34:05      28 阅读
  9. iOS中的UIScene和UISceneDelegate

    2024-06-06 07:34:05       25 阅读
  10. Android AAudio——音频流释放死锁(七)

    2024-06-06 07:34:05       27 阅读
  11. Python中的上下文管理:深入探索contextlib模块

    2024-06-06 07:34:05       24 阅读
  12. centos系统编译openssl和openssl-lib的rpm安装包

    2024-06-06 07:34:05       18 阅读
  13. godot.bk2

    godot.bk2

    2024-06-06 07:34:05      27 阅读
  14. Git commit规范

    2024-06-06 07:34:05       22 阅读