监控JVM的指令、方法和工具整理

实战

转载:
这是一篇指令介绍的稍微详细的文章
https://blog.csdn.net/yanchun_cheng/article/details/106386335
Visual连接方法:转载连接:
https://blog.csdn.net/weixin_34043301/article/details/88722668
https://blog.csdn.net/jhonhai/article/details/108436795
下面是我整合他们的内容写的一篇实战比较常用的内容

1、查看JVM版本

java -version

2、通过-D设置系统属性参数

//编译
javac TestJVM.java
//测试
java TestJVM
//添加运行参数
java -Dstr=123 TestJVM

3、-server与-client参数

server默认的初始堆空间大一些,默认并行垃圾回收器,启动慢,运行快

//用clinet启动
java -client -showversion TestJVM
//server
java -server -showversion TestJVM

## 64位系统就不支持client模式了

4、-Xms与-Xmx参数

  1. -Xms与-Xmx分别是设置jvm的堆内存的初始大小和最大大小。
  2. -Xmx2048m:等价于-XX:MaxHeapSize,设置JVM最大堆内存为2048M。
  3. -Xms512m:等价于-XX:InitialHeapSize,设置JVM初始堆内存为512M。
 java -Xms512m -Xmx2048m TestJVM

5、查看JVM运行参数

分两种情况

  1. 运行java命令时打印出运行参数;
  2. 查看正在运行的java进程的参数;

1、启动运行时,启动-XX:+PrintFlagsFinal,即可打印参数

java -XX:+PrintFlagsFinal -version

注意:参数有boolean类型和数字类型,值的操作符是=或:=,分别代表默认值和被修改的值。
2、查看正在运行的JVM参数

# 查看所有的参数,用法:jinfo -flags <进程id>
例:jinfo -flags 1136
# 通过jps 或者 jps -l 查看java进程
例:jps
例:jps -l
# 查看某一参数的值,jinfo -flag <参数名> <进程id>
例:jinfo -flag MaxHeapSize 6219

6、jstat命令进行查看堆内存使用情况

jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。

jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]

6.1、查看class加载统计

jstate -class <pid>:jstate -class 6219

说明:

  • Loaded:加载class的数量
  • Bytes:所占用空间大小
  • Unloaded:未加载数量
  • Bytes:未加载占用空间

6.2、查看编译统计

jstat -compiler 6219

说明:

  • Compiled:编译数量。
  • Failed:失败数量
  • Invalid:不可用数量
  • Time:时间
  • FailedType:失败类型
  • FailedMethod:失败的方法

6.3、垃圾回收统计

jstat -gc 6219

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

7、jmap命令查看内存使用情况

7.1、查看内存使用情况

 jmap -heap 6219

在这里插入图片描述

7.2、查看内存中对象数量及大小

#查看所有对象,包括活跃以及非活跃的 
jmap -histo <pid> | more 
#查看活跃对象
jmap -histo:live <pid> | more
例:jmap -histo:live 6219 | more

在这里插入图片描述

7.3、将内存使用情况dump到文件中

tip:有些时候我们需要将jvm当前内存中的情况dump到文件中,然后对它进行分析,jmap也是支持dump到文件中的

#用法:
jmap -dump:format=b,file=dumpFileName <pid>
#示例
jmap -dump:format=b,file=/tmp/dump.dat 6219

7.4、通过jhat对dump文件进行分析

#用法:
jhat -port <port> <file>
#示例:
jhat -port 9999 /tmp/dump.dat

打开浏览器进行访问:http://ip:9999/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8、通过MAT工具对dump文件进行分析

MAT介绍:
MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。使用内存分析工具从众多的对象中进行分析,快速的计算出在内存中对象的占用大小,看看是谁阻止了垃圾收集器的回收工作,并可以通过报表直观的查看到可能造成这种结果的对象

下载地址:https://www.eclipse.org/mat/downloads.php
官网地址:https://www.eclipse.org/mat/
在这里插入图片描述
使用
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

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

9、jstack命令的使用(CPU负载突然增高,出现死锁,死循环)

有些时候我们需要查看下jvm中的线程执行情况,比如,发现服务器的CPU的负载突然增高了、出现了死锁、死循环等,我们该如何分析呢?
由于程序是正常运行的,没有任何的输出,从日志方面也看不出什么问题,所以就需要看下jvm的内部线程的执行情况,然后再进行分析查找出原因

#用法:jstack <pid>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值