当前位置: 首页 > news >正文

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:显示分组监测,线程和监测类的统计监测数据
      在这里插入图片描述
      在这里插入图片描述

相关文章:

JVM学习-Jprofiler

JProfiler 基本概述 特点 使用方便,界面操作友好对被分析的应用影响小(提供模板)CPU,Tread,Memory分析功能尤其强大支持对jdbc,noSql,jsp,servlet,socket进行分析支持多种模式(离线、在线)的分析支持监控本地、远程JVM跨平台,拥…...

Skins

本主题解释如何将DevExpress主题/皮肤应用到应用程序中,如何允许用户在运行时在主题之间切换,如何自定义现有皮肤或创建自己的皮肤,等等。 WinForms订阅包括许多基本控件:按钮、复选框、表单、消息框、对话框、对话框等。 我们实现…...

【Meetup】探索Apache SeaTunnel的二次开发与实战案例

在数据科技快速演进的今天,业务场景的复杂化和数据量的激增,推动了大数据技术的迅速发展,在众多开源大数据处理工具中,Apache SeaTunnel以其强大的数据集成能力,成为众多企业的首选。 但随着应用深入,企业面…...

嵌入式Linux系统中RTC应用的操作详解

第一:RTC的作用以及时间简介 “RTC”的英文全称是Reul-Time Clock,翻译过来是实时时钟芯片.实时时钟芯片是日常生活中应用最为广泛的电子器件之一,它为人们或者电子系统提供精确的实时时间,实时时钟芯片通过引脚对外提供时间读写接口,通常内部带有电池,保证在外部系统关…...

Edge 工作区是什么?它都有哪些作用?

什么是工作区 Edge 工作区是什么?它是微软 Edge 浏览器中的一个功能,在帮助用户更好地组织和管理他们的浏览会话。通过工作区,用户可以创建多个独立的浏览环境,每个工作区内包含一组相关的标签页和浏览器设置。这使得用户能够根据…...

Docker|了解容器镜像层(1)

引言 容器非常神奇。它们允许简单的进程表现得像虚拟机。在这种优雅的底层是一组模式和实践,最终使一切运作起来。在设计的根本是层。层是存储和分发容器化文件系统内容的基本方式。这种设计既出人意料地简单,同时又非常强大。在今天的帖子[1]中&#xf…...

vue3设置全局变量并获取 全局响应式变量 窗口大小

设置 js文件统一管理全局变量 方法1 app provide() 全局提供变量 通过inject()使用 方法2 app实例配置全局变量 获取 通过 getCurrentInstance.appContext.config.globalProperties.$innerWidth访问到 code import { ref } from vue export const useGlobalState () > {c…...

Java——面向对象进阶(一)

前言 面向对象进阶(一):static,继承,this和super关键字 文章目录 一、static1.1 静态变量1.2 静态方法1.3 静态变量和静态方法在内存中 二、继承2.1 概念2.2 继承的特点和能继承什么2.3 继承中的重写2.4 this和super关键字 一、static 在 Jav…...

JDBC是什么?它如何工作?

一、JDBC概述 JDBC(Java Database Connectivity)是Java语言与数据库之间进行交互的API。它允许Java程序通过SQL(结构化查询语言)来执行各种数据库操作,如查询、更新、删除等。JDBC是Java应用程序访问数据库的标准方式…...

Qt:QDialogButtonBox的使用

QDialogButtonBox是Qt自带的按钮箱,通过枚举QDialogButtonBox::ButtonRole可以添加Qt定义按钮,或者通过方法QDialogButtonBox::addButton添加自定义的按钮。 // 自定义按钮。 button_box_ new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonB…...

38页 | 工商银行大数据平台助力全行数字化转型之路(免费下载)

【1】关注本公众号,转发当前文章到微信朋友圈 【2】私信发送 工商银行大数据平台 【3】获取本方案PDF下载链接,直接下载即可。 如需下载本方案PPT/WORD原格式,请加入微信扫描以下方案驿站知识星球,获取上万份PPT/WORD解决方案&a…...

【Git】如何不管本地文件,强制git pull

要在 Git 中强制执行 git pull 操作,忽略本地文件的更改,可以按照以下步骤操作: 保存当前工作状态:如果你有未提交的更改,可以使用 git stash 将这些更改存储起来。 git stash强制拉取最新代码:使用 git re…...

MySQL 高级 - 第十一章 | 索引优化与查询优化

目录 第十一章 索引优化与查询优化11.1 数据准备11.2 索引失效案例11.2.1 全值匹配10.2.2 最佳左前缀法则10.2.3 主键插入顺序10.2.4 计算、函数、类型转换&#xff08;自动或手动&#xff09;导致索引失效10.2.5 范围条件右边的列索引失效10.2.6 不等于&#xff08;! 或者 <…...

工厂模式——工厂方法模式+注册表

工厂方法模式的瑕疵 在前一篇笔记中我们介绍了工厂方法模式&#xff0c;示例的类图如下&#xff1a; 考虑一种情况&#xff1a;现在要在程序运行时&#xff0c;根据外部资源&#xff0c;动态的实例化对象。也就是说在编译期我们无法知道要实例化的对象的类型。因此在实例化的过…...

实验一、网络传输介质————双绞线 《计算机网络》

蝙蝠身上长鸡毛&#xff0c;忘了自己是什么鸟。 目录 一、实验目的 二、实验内容 1.双绞线的原理以及分类 2.了解双绞线的性质、结构与特性 3.掌握双绞线的制作方法 4.了解双绞线的材质 5.了解双绞线的发展趋势 三、实验小结 一、实验目的 1.双绞线的原理以及分类 2.了…...

在Linux/Ubuntu/Debian中使用lshw查看系统信息

在Linux/Ubuntu/Debian中使用lshw查看系统信息 lshw 是一个用于显示硬件配置的命令&#xff0c;可以提供系统硬件的详细信息&#xff0c;包括 CPU、内存、硬盘、主板等。该命令需要超级用户权限来获取详细信息。 常见用法&#xff1a; 显示所有硬件信息&#xff1a; sudo l…...

提高篇(八):扩展Processing功能:从库使用到跨平台应用

提高篇(八):扩展Processing功能:从库使用到跨平台应用 引言 Processing是一款强大的创意编程工具,广泛应用于艺术、设计和教育等领域。但其真正的魅力在于其可扩展性:你可以通过使用各种扩展库、结合其他编程语言、在不同硬件平台上应用,甚至创建自己的扩展库来丰富Pro…...

ubuntu18.04环境下,arduino ide在打开串口监视器时报错

ubuntu18.04环境下&#xff0c;arduino ide在打开串口监视器时报错 Exception in thread “AWT-EventQueue-0” java.lang.UnsatisfiedLinkError: /home/lzx/.jssc/linux/libjSSC-2.8_x86_64.so: /home/lzx/.jssc/linux/libjSSC-2.8_x86_64.so: file too short 这个错误表明 li…...

码蹄集部分题目(2024OJ赛18期;并查集+ST表+贪心)

1&#x1f40b;&#x1f40b;史莱姆融合&#xff08;钻石&#xff1b;并查集&#xff09; 时间限制&#xff1a;1秒 占用内存&#xff1a;128M &#x1f41f;题目描述 &#x1f41f;题目思路 这道题目使用并查集&#xff0c;同一集合的所有元素的最顶上的祖父节点是统一的。…...

算法:前缀和题目练习

目录 题目一&#xff1a;一维前缀和[模版] 题目二&#xff1a;二维前缀和[模版] 题目三&#xff1a;寻找数组的中心下标 题目四&#xff1a;除自身以外数组的乘积 题目五&#xff1a;和为K的子数组 题目六&#xff1a;和可被K整除的子数组 题目七&#xff1a;连续数组 题…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...