JVM调优工具Jprofiler分析项目内存和线程的基本操作(六)
问题背景
通过自己的项目,简单介绍一下Jprofiler分析内存和线程的基本使用
注意事项:
- 远程连接需要保持Jprofiler的windows客户端和Jprofiler的linux服务端版本保持一致,这样连接才不会出问题
- 上传同版本的安装包可以自己下载
- 也可以去官网下载
JVM调优工具Jprofiler无介绍快速安装(附安装包)(一)
JVM主要需要分析的情况
1 Jprofiler的live memory中频繁创建的Java对象:可能是死循环、循环次数太多,递归未终止
2 Jprofiler的live memory中存在大对象:bytes[]应该边读边写,长时间不写导致bytes数组过大
3 Jprofiler的live memory中产生内存泄漏:内存泄漏的时候开启Recorded Objects分析
4 Jprofiler观察web容器的线程最大数:Tomcat的线程容量应该大于最大并发数
5 Jprofiler观察线程阻塞
6 Jprofiler观察线程死锁
7 Jprofiler查看慢sql
Telemetries
- Memory内存占用情况,蓝色为已使用的内存,绿色为剩余空闲的内存
- GC Activity指的是垃圾回收器的活跃度,尖峰是Full GC,一般的是Young GC
- Classes类的总数,蓝色是先有的总数,绿色是可以继续创建的数量
- Threads线程数,黄色指的是正在等待的线程数量,蓝色指的是网络IO正在运行的行程数,绿色是正在运行的线程数
- CPU Load使用率视图,蓝色线指的是系统的CPU使用率,绿色线指的是当前程序的使用率
Memory视图
1 可以看到内存的增长和衰减形成了参差不齐形状,每次峰值拐点处,说明进行了一次GC垃圾回收
2 如果蓝色平均值是不断上升的情况,说明可能存在内存泄漏的情况
GC Activity视图
1 可以选择GC类型进行查看
2 这里也是可以进行优化的,如果Full GC的次数频率过高,会影响程序整体的性能,因此我们可以通过
- 去调节垃圾回收器的款式
- 新生代与老年代的比例
- 新生代到老年代的年龄
- 触发Young GC的条件和Full GC的条件
Classes类数量视图
1 查看看类是否无故持续升高,可能出现内存泄漏
Threads线程数视图
1 直观可以看到等待线程很多,这样其实比较消耗资源
- 可以减少等待的线程数量
- 如果一直为blocked thread红色占满,说明产生了死锁
CPU Load使用率视图
1 可以看到这个程序的使用率直接影响了系统CPU的使用率,成为了一个正比,而且浮动比较大,是值得优化的地方
All Objects视图
1 一般来说,如果有一个类的数量一直在增长,说明有内存泄漏的情况
2 可以通过右键进行查看计数排序
Allocation Call Tree内存分配调用树
1 点击Press,可以直观看到内存大概是什么类和方法使用了
2 点击OK
3 可以看到,我的程序的内存大部分在线程类里面使用了
4 查看内存热点分配,我都的事分配到了线程
Class Tracker类追踪视图
还没写完,后续接着写
作为程序员第 139 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …
Lyric: 心里的眼泪
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/110736.html