安装JProfiler

jprofiler_windows-x64_11_0_2
链接:https://pan.baidu.com/s/1jWyPYHkuDNcUo_ylONanMQ
提取码:1234


JProfiler11破解


然后打开破解机器 KeyGen.exe
链接:https://pan.baidu.com/s/1bINO2lcy5jWE_U2fkKNONg
提取码:1234
–来自百度网盘超级会员V6的分享





配置本地监控

我们启动一个本地项目weblogic,Jboss,tomcat或者springboot都行,我们就拿主流的springboot来说(其实内嵌的就是tomcat)


然后我们打开jprofiler,监控指定的程序



配置远程监控

我的服务器是x86的uname -m
在需要监听的目标服务器上安装jprofiler_linux_11_0_2.tar.gz
链接:https://pan.baidu.com/s/1U3aj7hDR4-_jU9oj2wNG_A
提取码:1234
我是放在/opt 下,解压tar zxfv jprofiler_linux_11_0_2.tar.gz,重命名为:jprofiler11
配置/etc/profile文件,添加如下内容

export INSTALL4J_JAVA_HOME=/usr/local/src/java/java-se-8u41-ri/jre  #jdk安装目录下
export LD_LIBRARY_PATH=/opt/jprofiler11/bin/linux-x86  #jprofile的安装目录下

找java安装目录whereis java

/usr/local/src/java/java-se-8u41-ri/ 就是安装目录,我们进去看看有没有jre目录

修改完后,使环境变量生效
source /etc/profile

需要监听的项目必须在服务器上运行中否则JProfiler 启动会失败的

启动自己的项目然后检测是否启动

启动成功后那么就可以启动服务器上的JProfiler服务了 /opt/jprofiler11/bin/jpenable

选择[1]然后会显示客户端可以连接的端口号,用于客户端连接服务器的

配置window下的jprofile11









jProfiler客户端介绍

仪表盘


这个不用多说,看说明就知道啥东西

查看对象增长情况

ALL Objects(全部对象)

Recorded Objects (记录对象)

我们可以指定开启时间内记录对象的的使用情况,这样就能更佳快速的找到问题 ,每次开关都会从新统计,还有最关键的就是 Mark Current 这个按钮,他可以标记现在对象的使用情况为绿色,那么行增的对象就是红色了,这样一对比就知道那个对象有问题了


右键可以删除标记

Allocation Call Tree(记录调用树)

开始后统计调用情况,每次开关都会从新统计

Allocation Hot Spots(热点)

能统计出来开启时间段内使用某些方法或者xxx 的调用情况,相当于反向查询谁调用我了,开关后从新统计


上图显示println这个方法被 MathGame.run 和MathGame.main方法调用,以及他们这些方法一共调用了多少次和多少时间以及占用的内容大小

Class Tracker(类调用跟踪)

能检测指定类,的时间片段调用情况和调用频率来进行分析出来,是否有问题

选择需要监控的类或者包那那么当这些类进行被调用了,就会在视图上显示


可以看到在什么时间调用了 ,如果想暂停下来

检测各种调用情况

Call Tree (调用树)


通过关闭在开启可以重新统计

一般情况我们会过滤掉我们不想看到的内容

选择demo.就是过滤此包下的全部内容,想要恢复过滤内容可以在设置里进行恢复

Hot Spots(热点)

Call Graph(查看方法的调用树)


Method Statistics(方法统计)

开启后,这段时间内被调用的方法就会被拦截到

Call tracer 调用跟踪

开启后会记录这段时间内的方法执行情况包括内部执行情况,关闭后以树展示出来


从上图标记是红的,就能看出来方法内部执行了循环了

如果不想看到某方法那么可以隐藏掉

恢复显示

JavaScript XHR

JProfiler Origin Tracker_v1.0.3.crx
链接:https://pan.baidu.com/s/1wcTRRPHl2wanKWDRwsXhwQ
提取码:1234

要使用此功能,您必须使用Google Chrome 作为浏览器并安装 JProfiler 源跟踪器扩展。



运行前端时候点击下


然后插件颜色就变为红色了,那么就说明这个网站激活成功了

然后回到 jprofiler中就发现在监听中了

检测线程各种情况

注意: 如果请求的线程内部没有长时间的阻塞或者睡眠,一般都抓不到的,因为更新频率是2秒一次

Thread History(线程状态)

看着图很简单,除了绿色的其他如果时间过长都有问题,如果出现红色那么就是死锁
测试方式就是打开监控后去访问有问题的功能,那么就能排查出来具体的问题, 找到问题的线程,那么我们就能去获取这个线程内部的堆栈,从堆栈中就能看出来问题是啥

Thread Monitor(线程列表)

如果线程过多, 在Thread History中不好找那么我们可以通过这个列表进行筛选,这样就能快速锁定有问题的线程了

Thread Dumps(线程堆栈)

通过上面的方法找到问题的线程方法后,然后我们就能在 Thread Dumps去查询对应方法的堆栈信息
每次点击都能获取最新的全部线程堆栈信息,并且以树型展示


上图红色的就是死锁,告诉你这个锁发生在那个类多少行

这种都是第三方的请求,(有用户的有其他工具的,要会分辨,看堆栈就能看出来的)


类似于下图这种就不用看,这都是系统自己的请求或者其他的请求

上图是tomcat内部进行唤醒和挂起线程的操作,估计是线程池的东西

我们一般找下面这图出现的请求这个才是真实的请求

从上图就能看出来问题了,是内部一直在调用sleep,看堆栈是从下往上看,然后我们去看源码

数据库连接和sql语句执行情况


Mybaitis 和JDBC都一样
1秒(s)=1000毫秒 1毫秒(ms)=1000微妙 10万微妙(us)=1秒
从上图可以看到我查询用户数量才使用了1毫秒不到

可以进行开关进行从新监控

请求情况

注意: 如果是请求是死循环或者死锁那么这个是监控不到的,必须这个请求能响应才行

至于其他的功能我基本没用到这里就不说了,用到了在补上

堆快照分析

导出当前堆的快照

导入对堆文件快照

分析堆快照

Current Object Set(当前堆的所有对象情况)

一般需要多个堆的快照进行对比,进行发现是否有内存泄露问题和对象增长速度过快问题,从而进行分析原因

Thread Dump(当前堆的线程情况)

可以查看到死锁,或者死循环或者长时间处于等待状态的线程,执行的方法和问题原因

比较快照

注意: (.hprof)文件的快照只支持内存比较 ,而jps快照是支持所有的,但是需要开启部分功能才行

我准备了3个同源的堆快照(.hprof),是在不同时间段获取的


同时选取需要对比的全部快照

当然也可以后期一个一个添加

然后按住Shift+鼠标左键选择2个需要对比的快照(一次最多对比2个快照,建议拿第一个快照和比第一个时间段大的快照进行依次对比)

内存比较



加号就是 333333.hprof这个快照比00000.hprof快照增加的
最后下面有一个汇总,333333.hprof比00000.hprof 总体增加了还是减少了多少内存

对比不同时间段快照,可以看出来内存是一直处于增长的,还是有减有增,如果一直维持在一个范围那么可以接收的 ,如果对比多个快照发现都是一直处于增长没有减过那么肯定是有问题的,时间长了就会发生oom了

调用情况比较

必须开启

然后保存为jps文件

然后就可以进行对比了

点赞 -收藏-关注-便于以后复习和收到最新内容 有其他问题在评论区讨论-或者私信我-收到会在第一时间回复 如有侵权,请私信联系我 感谢,配合,希望我的努力对你有帮助^_^

JProfiler11使用教程之JVM调优相关推荐

  1. 手把手教你设置JVM调优参数

    关注"Java后端技术全栈" 回复"000"获取大量电子书 首先,还是一张思维导图,看看本文主要内容: 今天来熟悉一下,关于JVM调优常用的一些参数. X或者X ...

  2. 清华毕业大牛教你涨薪5K的JVM调优骚操作是什么!如何在简历写上熟悉(精通)JVM调优,有过线上调优经验!

    就在前天的时候,马士兵老师讲了一节公开课,分享了涨薪5K的JVM调优骚操作是什么!如何在简历写上熟悉(精通)JVM调优,有过线上调优经验! 主要包含的内容如下: 1. 为什么一个百万级TPS系统会频繁 ...

  3. JVM调优,面到了阿里性能优化师!

    小K 菜哥,我看你朋友圈,你好像换工作了? 菜哥 对啊,前阵子被产品经理烦的头疼,就想换工作了.刚好找到一个不错的. 小K 给我说说呗,让我也参考一下,我现在工资才15K,主管死坑,我也想换工作了 菜 ...

  4. 数据结构与算法+JVM调优和GC常用算法+数据库高级+复杂sql手写

    数据结构 双向链表 二叉排序树 红黑树 散列表 双向链表: 什么是双向链表 双向链表是一种数据结构,是由若干个节点构成,每个节点由三部分构成, 分别是前驱节点,元素,后继节点,且双向链表中的节点在内存 ...

  5. 记一次简单的 JVM 调优经历

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://zhenbianshu.github.io 背景 最近对负责的项目进行了一次性能优化,其中包括对 JVM 参数 ...

  6. 一次线上 JVM 调优实践,FullGC 40 次/天到 10 天一次的优化过程

    点击关注公众号,Java干货及时送达 来源 | https://blog.csdn.net/cml_blog/article/details/81057966 通过这一个多月的努力,将 FullGC ...

  7. SpringBoot项目优化和Jvm调优(亲测,真实有效)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:星朝 原文:cnblogs.com/jpfss/p/9753 ...

  8. Jvm 系列(七):Jvm 调优-工具篇

    工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗费性能的分析(dump文件分析)一般也不会在生产直接分析,往往dump下来的文件达1G左右,人工分析效率较低,因此利用工具来分析jvm相关问题 ...

  9. tomcat jvm调优

    JVM调优总结 堆(Heap)内存和非堆(Non-heap)内存 堆内存就是Java代码的,留给开发人员使用: 非堆内存是留给JVM自己使用的(方法区.JVM内部处理或优化所需要的内存.每个类结构以及 ...

最新文章

  1. 源码安装、rpm安装 图
  2. 开发日记-20190719 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 12
  3. HashSet/HashMap 存取值的过程
  4. 安装Exchange2003时出0XC1037AE6错误的解决方法.
  5. Java中NaN和-0.0f的比较问题
  6. python 笔记:if __name__==‘main’
  7. python3 获取cookie解决方案
  8. windows查看文件MD5值
  9. sendkeys.send 始终输出英文._PLC的三种输出方式,你知道有哪些吗?
  10. Android About ContentProvider
  11. oracle10g 安装手册 linux,oracle10g在x86linux上的安装步骤
  12. sql经典题目(1)
  13. 上周热点回顾(10.15-10.21)
  14. #计算机网络#学习笔记-常用端口详解
  15. 机器视觉应该先看什么书?
  16. 【算法工程师】深度学习面试问题总结
  17. 7660生成负电压芯片
  18. HTTP协议文件下载
  19. 【聚沙成塔】-MYSQL全文索引使用MATCH AGAINST
  20. JDK1.8新特性(八):还在重复写空指针检查代码?赶紧使用Optional吧!

热门文章

  1. 纸上得来终觉浅——Redis 个人总结
  2. python完成“疯狂填词”程序。
  3. IAR Systems全面支持芯驰科技9系列芯片
  4. 使用Fluorine的一些心得
  5. Cucumber使用进阶
  6. 中国联通成为2020年的最大输家,用户净流失超千万
  7. 基于墨刀实现的音乐播放器APP——E music
  8. 用友政务表格技术应用开发实践:预算一体化产品核心功能搭建
  9. 闪验联通定制版SDK iOS集成文档
  10. 结构化程序的三种基本逻辑结构