JVM命令与调优工具的使用(OOM与GC回收例)

1.JVM命令

1.1 jps

查看当前的java进程的PID例:

jps

在这里插入图片描述

查看详情例:

jps -l

在这里插入图片描述

1.2 jinfo

查看某个java进程目前的参数设置的情况例:

jinfo -flag MaxHeapSize 5768

在这里插入图片描述

查看参数详情例:

jinfo -flag 5758

在这里插入图片描述

1.3 jstat

查看当前java进程类装载的情况,每1000毫秒打印一次,打印10次例:

jstat -class 5768 1000 10

在这里插入图片描述
查看垃圾回收的信息,每1000毫秒打印一次,打印10次例:

jstat -gc 5768 1000 10

在这里插入图片描述

1.4 jstack

查看某个java进程当前存在的线程的堆栈信息,可以用来查看死锁的情况

jstack 5768

在这里插入图片描述

1.5 jmap

可以打印出堆转存储快照例:

jmap -heap 5768

在这里插入图片描述

堆内存相关信息例:

jmap -dump:format=b,file=heap.hprof 5768

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

可以在设置在OutOfMemoryError时自动dump出文件,设置如下

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof

在这里插入图片描述

2 常用工具

2.1 jconsole 监听某一个Java进程

界面如下:

在这里插入图片描述

然后可以选择连接想要监听的进程

在这里插入图片描述

2.2 jvisualvm 监听某个Java进程

界面如下:

在这里插入图片描述

2.3 mat/perfma 分析内存相关的信息

使用mat可以对之前dump下来的heap.hprof文件进行查看,也可以使perma(在线工具)。

在这里插入图片描述

2.4 gceasy.io / gcviewer 分析垃圾回收

3 性能优化

3.1 使用mat分析OOM问题

可以使用Histogram查看实例数量

在这里插入图片描述

Leak Suspects可以查看内存泄漏的情况

在这里插入图片描述

可以看出来这里是因为Person对象创建太多引起的

在这里插入图片描述

3.2 GC优化

通过不断调整,观察GC日志的吞吐量和停顿时间,寻找最佳值

输出GC日志到gc.log文件

-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+UseG1GC
-Xloggc:gc.log

借助网站:gceasy.io对日志进行分析

主要就是调整各种参数,垃圾收集器—>查看吞吐量和停顿时间的变量 高吞吐量,低停顿时间

在这里插入图片描述

也可以使用本地工具:gcviewer-1.36-SNAPSHOT.jar

运行命令:

java -jar gcviewer-1.36-SNAPSHOT.jar

主要关注吞吐量和停顿时间

在这里插入图片描述

在这里插入图片描述

4.性能优化指南

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值