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
- JProfiler通过对线程历史的监控判断其运行状态,并监控是否有线程阻塞产生,还能将一个线程所管理的方法以树状形式呈现,对线程剖析
- class/class instance相关信息,例如对象的个数,大小,对象创建的方法执行栈,对象创建的热点
- Instrumentation重构模式:这是JProfiler的全功能模式,在class加载之前,JProfiler把相关功能代码写入到需要分析的class的bytecode中,对正在运行的JVM有一定影响
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!














