JProfiler分析
一、从本机连远程机器的连接方法
1、Start Center - Quick Attach
选择SSH tunnel,填入ssh信息
agent默认会自动安装在$HOME/.jprofiler11目录下
关于agent:
1)JProfiler GUI通过本机程序,连到agent
2)agent通过挂钩获取jvm内的参数
3)agent进过计算统计后,返回给JProfiler GUI
2、选择一个需要加载的jvm虚拟机
3、选择模式,一般选Instrumentation
Instrumentation模式获取信息更为实时
Sampling模式采样间隔时间更长,对系统负载小
其他参数默认即可:
4、设置过滤器
点击ok后,选择Session - Session Settings,添加需要分析的包名
说明
绿色图标profiled:类中的所有方法都测量
黄色图标compact:只测量该类的第一个调用,不测量内部调用时间
红色图标ignored:不进行分析
二、CPU分析
1、选择CPU views下的Call Tree
在下方输入要过滤的包名
这里就能看到这个TagInfoNotifyTask类运行花了多少时间,类里调用的方法doTchlMerTagInfo、buildReq、updateNotify各花了多少时间
2、线程状态
Runnable运行状态:线程准备好处理字节码指令或当前正在CPU内核上执行时
Waiting等待状态:当调用了Object.wait()或者Thread.sleep()时
Blocking阻塞状态:例如线程在异步代码块边界时
JProfiler添加了一个合成的“Net I/O”状态:用于跟踪线程等待网络数据的时间(例如数据库查询、HTTP请求)
3、聚合级别
除了按照方法执行度量外,还可以在类或包级别上聚合
三、内存分析
1、选择Live memory下的All Objects
显示出所有内存的对象
2、Freeze View按钮
冻结按钮,用于停止更新显示的数据
3、Mark Current按钮
标记当前状态,会增加一列,将采集的数据和标记处做比较
4、选择Live memory下的Class Tracker
添加类,会以图表的形式,跟踪这个类的数量变化
5、选择Live memory下的Allocation Call Tree
输入类名或者包名, 可以查看内存分配的情况
四、堆栈分析
选择Heap Walker用于生成堆快照
五、线程分析
Threads:提供线程生命周期和捕获线程转储
Monitors & locks:分析多线程交互的功能
参考资料:
https://blog.****.net/u013613428/article/details/53926825