JProfiler分析

一、从本机连远程机器的连接方法
1、Start Center - Quick Attach
选择SSH tunnel,填入ssh信息
JProfiler分析

agent默认会自动安装在$HOME/.jprofiler11目录下
关于agent:
1)JProfiler GUI通过本机程序,连到agent
2)agent通过挂钩获取jvm内的参数
3)agent进过计算统计后,返回给JProfiler GUI

2、选择一个需要加载的jvm虚拟机
JProfiler分析

3、选择模式,一般选Instrumentation
Instrumentation模式获取信息更为实时
Sampling模式采样间隔时间更长,对系统负载小
其他参数默认即可:
JProfiler分析

4、设置过滤器
点击ok后,选择Session - Session Settings,添加需要分析的包名
JProfiler分析

说明
绿色图标profiled:类中的所有方法都测量
黄色图标compact:只测量该类的第一个调用,不测量内部调用时间
红色图标ignored:不进行分析

二、CPU分析
1、选择CPU views下的Call Tree
在下方输入要过滤的包名
JProfiler分析
这里就能看到这个TagInfoNotifyTask类运行花了多少时间,类里调用的方法doTchlMerTagInfo、buildReq、updateNotify各花了多少时间

2、线程状态
Runnable运行状态:线程准备好处理字节码指令或当前正在CPU内核上执行时
Waiting等待状态:当调用了Object.wait()或者Thread.sleep()时
Blocking阻塞状态:例如线程在异步代码块边界时
JProfiler添加了一个合成的“Net I/O”状态:用于跟踪线程等待网络数据的时间(例如数据库查询、HTTP请求)

3、聚合级别
除了按照方法执行度量外,还可以在类或包级别上聚合

三、内存分析
1、选择Live memory下的All Objects
显示出所有内存的对象
JProfiler分析

2、Freeze View按钮
冻结按钮,用于停止更新显示的数据

3、Mark Current按钮
标记当前状态,会增加一列,将采集的数据和标记处做比较
JProfiler分析

4、选择Live memory下的Class Tracker
添加类,会以图表的形式,跟踪这个类的数量变化

5、选择Live memory下的Allocation Call Tree
输入类名或者包名, 可以查看内存分配的情况
JProfiler分析

JProfiler分析

四、堆栈分析
选择Heap Walker用于生成堆快照
JProfiler分析

五、线程分析
Threads:提供线程生命周期和捕获线程转储
Monitors & locks:分析多线程交互的功能

参考资料:
https://blog.****.net/u013613428/article/details/53926825