常用JVM调优工具(包含调优命令)

转载:https://mp.weixin.qq.com/s/iVZT37cNRV0UQ1qNe-hWdw

JVM 日常调优步骤总结起来就是:

1、首先通过 jps 命令查看当前进程;

在这里插入图片描述

2、然后根据 pid 通过 jinfo 命令查看和修改 jvm 参数;

在这里插入图片描述
在这里插入图片描述

3、通过 jstat 命令查看 class 的加载信息以及 GC 信息;

在这里插入图片描述

4、通过 jstack 命令查看线程堆栈信息;

在这里插入图片描述

5、通过 jmap 命令查看堆内存信息。

在这里插入图片描述

jvm常用查询指令: https://blog.csdn.net/weixin_44284706/article/details/128878278

用以上的命令查看可以解决一些问题,但是对于 GC 日志以及 dump 文件不便于分析,因此下面介绍几个常用的图形化界面工具。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以对本地进程或者远程进程,连接之后可以进行 JVM 信息查看:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

-Dcom.sun.management.jmxremote.port=8989
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access 
-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password

2、在 tomcat 目录 conf/ 文件中添加两个文件 jmxremote.access 和 jmxremote.password,

一个是账号的权限,一个是账号密码,并给这 2 个文件授予可读写权限:

chmod -R 600 jmxremote.access 、
chmod -R 600 jmxremote.password。

jvisualvm 连接远端 tomcat 进程:

1、在 jvisualvm 中选中“远程”,右键“添加”

2、主机名上写服务器的 ip 地址,比如 66.xxx.xxx.xxx,然后点击“确定”

3、右键该主机“66.xxx.xxx.xxx”,“添加 JMX 连接”,表示通过 JMX 技术连接远端服务器的 Java 进程

4、在“添加 JMX 连接”界面中“连接”里输入“66.xxx.xxx.xxx:8989”,勾选“使用安全凭证”,输入用户名和密码,点击确定进行远端连接。

在这里插入图片描述

1、下载arthas-boot.jar:

curl -O https://arthas.aliyun.com/arthas-boot.jar

2、用java -jar的方式启动

java -jar arthas-boot.jar

具体可参考:

https://github.com/alibaba/arthas

https://github.com/alibaba/arthas/blob/master/README_CN.md

在这里插入图片描述

Java堆分析器Memory Analyzer(MAT,Memory Analyzer Tool)是一种用于分析Java堆的强大工具。MAT是一个开源工具,可以与Eclipse集成使用,也可以作为独立的命令行工具使用。它由Java开发,可以在任何支持Java的平台上运行。

MAT的主要功能包括:

快速查找和比较不同heap dump文件。导出报告和分析结果,包括CSV、Excel、XML和HTML格式。

Eclipse 的 MAT 插件 MemoryAnalyzer 用于分析堆内存泄漏,

下载地址:https://www.eclipse.org/mat/downloads.php 。

在这里插入图片描述

下载以后解压,我们可以运行 mat 目录下的 MemoryAnalyzer.exe,用它打开 Heap Dump 文件,

以便于我们进行分析堆内存泄漏问题,如下:

在这里插入图片描述

Histogram:查看内存中的每个类的对象实例、对象的个数及其大小

Leak Suspects:查看内存泄漏的可能原因

Top Consumers:查看大对象

在类名上右键—>List Objects—>with incoming references 可以列出该类的实例,如下:

在这里插入图片描述

在类名上右键—>Merge Shortest Paths to GC Roots—>exclude all phantom/weak/soft etc.references 可以看到 GC Root 以及没有垃圾回收的原因,如下:

在这里插入图片描述
在这里插入图片描述

官方网址:https://perfma.com

Java 虚拟机参数分析:https://club.perfma.com/topic/product-opts

Java 线程 Dump 分析:https://club.perfma.com/topic/product-thread

Java 内存 Dump 分析:https://club.perfma.com/topic/product-memory

在这里插入图片描述

通过以下命令开启 GC 日志打印,拿到 GC 日志以后,就可以用工具进行进一步地分析了。

-XX:+PrintGCDetails:打印 GC 详细信息

-XX:+PrintGCDateStamps:在每个 GC上打印日期戳

-XX:+PrintGCTimeStamps:在每个 GC 上打印时间戳

-Xloggc:指定 GC log 的位置和日志文件名称

在运行程序时,为了快速发生内存溢出,设置内存为 10M

-Xms10M -Xmx10M 

设置以下的参数,可以开启 GC 日志打印
-XX:+PrintGCDetails 
-XX:+PrintGCDateStamps 
-XX:+PrintGCTimeStamps 
-Xloggc:d:/dump/gc.log

GC 日志在线分析网站 gceasy:https://gceasy.io/

在这里插入图片描述

GC 日志本地分析工具 gcviewer:

具体可参考:https://github.com/chewiebug/GCViewer

下载地址:https://sourceforge.net/projects/gcviewer

双击下载的 gcviewer-1.37-SNAPSHOT.jar 文件可打开分析界面,选择 gc 日志文件打开即可,如下:

在这里插入图片描述

jvm常用查询指令: https://blog.csdn.net/weixin_44284706/article/details/128878278

转载: https://mp.weixin.qq.com/s/iVZT37cNRV0UQ1qNe-hWdw

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值