JVM调优工具Jprofiler分析项目内存和线程的基本操作(六)

问题背景

通过自己的项目,简单介绍一下Jprofiler分析内存和线程的基本使用
注意事项:

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

1 简要视图

视图中可以看见:

  • 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类追踪视图

1 选择一个类进行追踪


还没写完,后续接着写




作为程序员第 139 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …

Lyric: 心里的眼泪

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JVM调优工具主要分为以下几类: 1. 监控工具:监控JVM的运行情况,如JMX、VisualVM等; 2. 垃圾回收工具:如G1、CMS等; 3. 堆内存工具:如JConsole、Java Mission Control等; 4. 代码分析工具:如JProfiler、YourKit等。 其中,JMX是JVM自带的监控工具,可以查看JVM的内存使用情况、线程状态、类加载情况等信息。VisualVM是一款免费的Java应用程序性能分析工具,可以通过插件方式支持多种JVM,包括JRockit、IBM JDK、OpenJDK等。VisualVM可以监控应用程序的CPU、内存线程、GC等情况,同时还提供了堆内存分析线程分析和CPU分析等功能。 垃圾回收工具主要是针对不同的垃圾回收算法进行优化,如G1(Garbage First)是一种基于区域的垃圾回收器,适用于大内存应用,可以快速地进行垃圾回收。CMS(Concurrent Mark Sweep)是一种并发的垃圾回收器,可以在应用程序运行时进行垃圾回收,减少应用程序暂停时间。 堆内存工具主要用于分析应用程序的内存使用情况,如JConsole可以监控堆内存使用情况、线程状态、类加载情况等信息,Java Mission Control可以进行更加深入的堆内存分析,包括对象分配、对象生命周期、对象引用关系等。 代码分析工具主要用于分析应用程序的代码性能,如JProfiler可以进行方法级别的性能分析内存分析等,YourKit可以进行CPU分析内存分析线程分析等。这些工具可以帮助开发人员快速定位应用程序的性能问题,并进行优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值