一、JVM 命令行工具

jps/jinfo 查看 java 进程
jstat 查看 jvm 内部 gc 相关信息
jmap 查看 heap 或类占用空间统计
jstack 查看线程状态
jcmd

二、图形化工具
jconsole
Java Mission Control
jvisualvm
visualGC 插件

疑问:
如何分析死锁问题?

jcmd报错

  1. PS C:\Users\hdj> jcmd 6756 VM.info
  2. 8268:
  3. java.lang.IllegalArgumentException: Unknown diagnostic command

默认配置 堆内存大小是?
https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/parallel.html#default_heap_size

https://www.oracle.com/java/technologies/javase-jdk15-downloads.html

参考

一、jclasslib

1. 介绍

用于查看函数中的局部信息

2. 在IDEA 中安装jclasslib插件

1、打开IDEA的Settings设置,找到Plugins
image.png

2、搜索jclasslib点击安装,然后重启
image.png

3、点击View,打开jclasslib视图
image.png
image.png

4、查看方法的字节码
image.png

二、MAT(Memory Analyzer Tool)

2.1 下载

https://www.eclipse.org/mat/downloads.php
image.png

2.2 解压使用

  • 解压启动

    1. unzip MemoryAnalyzer-1.9.1.20190826-linux.gtk.x86_64.zip
    2. ./mat/ModemManager
  • 打开使用: 导入-XX:+HeapDumpOnOutOfMemoryError 和 -XX:+HeapDumpPath 导出的堆详情文件(文件格式*.hprof)

image.png

三、JOL(Java Object Layout,查看Java 对象布局、大小工具)

3.1 添加依赖

  1. <dependency>
  2. <groupId>org.openjdk.jol</groupId>
  3. <artifactId>jol-core</artifactId>
  4. <version>0.9</version>
  5. </dependency>

参考