JVM学习笔记(八)常用命令和常用工具

小灰灰 2023-07-12 11:40 44阅读 0赞

8.2 常用命令

8.2.1 jps

查看java 进程 jps -l

8.2.2 jinfo

实时查看和调整JVM参数

1)查看某个java进程的name属性

  1. jinfo -flag MaxHeapSize PID
  2. jinfo -flag UseG1GC PID

2)修改参数

只有被标记为 manageable 的flag才能被实时修改

jinfo -flag [+|-] PID

jinfo -flag = PID

3) 查看曾经被赋值过的一些参数

  1. jinfo -flags PID

8.2.3 jstat

1)查看虚拟机性能统计信息

2)查看类装载信息

  1. 查看某个java 进程的类装载信息,每1000毫秒输出一次,共输出10
  2. jstat -class PID 1000 10

在这里插入图片描述
3)查看垃圾收集信息

  1. jstat -gc PID 1000 10

8.2.4 jstack

查看线程堆栈信息

  1. jstack PID

8.2.5 jmap

生成堆转储快照

1)打印出堆内存相关信息

  1. -XX:PrintFlagsFinal -Xms300M -Xmx300M
  2. jmap -heap PID

2)dump 出堆内存相关信息

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

3) 设置堆内存溢出,自动dump文件

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

8.3 常用工具

8.3.1 jconsole

JConsole 是JDK自带的可视化监控工具。

  1. 命令行输入:jconsole

8.3.2 jvisualvm

可以监控本地、远程java进程的CPU、类、线程

(1)在visualvm中选中“远程”,右击“添加”

(2)主机名上写服务器的ip地址,比如31.100.39.63,然后点击“确定”

(3)右击该主机“31.100.39.63”,添加“JMX”[也就是通过JMX技术具体监控远端服务器哪个Java进程]

在启动项加上以下参数:

  1. -Dcom.sun.management.jmxremote - Djava.rmi.server.hostname=31.100.39.63 -Dcom.sun.management.jmxremote.port=8998 -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个文件

jmxremote.access

  1. guest readonly
  2. manager readwrite

jmxremote.password

  1. guest guest
  2. manager manager

授予权限 : chmod 600 jmxremot

8.3.3 Arthas

Arthas 是 Alibaba 开源的Java诊断工具,采用命令行交互模式,

官网:https://github.com/alibaba/arthas

8.3.3.1 下载与安装

  1. curl -O https://alibaba.github.io/arthas/arthas-boot.jar
  2. java -jar arthas-boot.jar
  3. # 然后可以选择一个Java进程

Print usage

  1. java -jar arthas-boot.jar -h

8.3.3.2 常用命令

  1. version:查看arthas版本号
  2. help:查看命名帮助信息
  3. cls:清空屏幕
  4. session:查看当前会话信息
  5. quit:退出arthas客户端
  6. ---
  7. dashboard:当前进程的实时数据面板
  8. thread:当前JVM的线程堆栈信息
  9. jvm:查看当前JVM的信息
  10. sysprop:查看JVM的系统属性
  11. ---
  12. sc:查看JVM已经加载的类信息
  13. dump:dump已经加载类的byte code到特定目录
  14. jad:反编译指定已加载类的源码
  15. ---
  16. monitor:方法执行监控
  17. watch:方法执行数据观测
  18. trace:方法内部调用路径,并输出方法路径上的每个节点上耗时
  19. stack:输出当前方法被调用的调用路径
  20. ......

8.3.4 MAT

java 堆分析器,用于查找内存泄露

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

8.3.5 GC日志分析工具

  1. -XX:+PrintGCDetails
  2. -XX:+PrintGCTimeStamps
  3. -XX:+PrintGCDateStamps
  4. -Xloggc:gc.log

在线

  • http://gceasy.io

GCViewer


When I let go of what I am , I become what I might be.
走出舒适圈,遇见更好的自己。

发表评论

表情:
评论列表 (有 0 条评论,44人围观)

还没有评论,来说两句吧...

相关阅读