JVM调试命令与调试工具

目录

一、JDK自带命令

1、jps

2、jstat(FullGC频繁解决方案)

3、jmap

4、jhat

5、jstack(cpu占用高解决方案)

6、jinfo

二、JDK的可视化工具JConsole

1、JConsole

2、VisualVM


一、JDK自带命令

Sun JDK监控和故障处理命令如:

1、jps

JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。

jsp命令格式:

java 复制代码
`jps [ options ] [ hostid ]
扩展参数:jps -l;jps -mlv;`

各参数说明如下:

2、jstat**(FullGC频繁解决方案)**

JVM statistics Monitoring,用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。

jstat命令格式:

java 复制代码
`jstat [ option vmid [interval[s|ms] [count]] ]
jstat -gc pid 1000 10
查看当前pid使用jvm堆栈空间的内存使用情况,每1000豪秒,共打印10次
jstat -gcutil pid 1000 10 内存百分比`

3、jmap

JVM Memory Map,用于生成heap dump文件。

jmap命令格式:

java 复制代码
`jmap [ option ] vmid`

4、jhat

JVM Heap Analysis Tool,与jmap搭配使用,用来分析jmap生成的dump,该命令解析 Java 堆转储文件并启动 Web 服务器,生成dump的分析结果后,可以在浏览器中查看。

使用案例:

1. 导出dump信息到a.bin文件

2. 启动jhat进行分析文件

5、jstack(cpu占用高解决方案)

用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈集合,生成线程快照的目的通常是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间挂起等,都是导致线程长时间停顿的常见原因。

jstack命令格式:

java 复制代码
`jstack [ option ] vimd`

6、jinfo

JVM Configuration info,用于实时查看和调整虚拟机运行参数。

jinfo命令格式:

主要介绍-flag参数,如果想查看一个已经运行的java程序的虚拟机参数值

java 复制代码
`jinfo [ option ] pid
$ jinfo -flag MaxMetaspaceSize 962
-XX:MaxMetaspaceSize=18446744073709547520`

二、JDK的可视化工具JConsole

1、JConsole

JConsole(Java Monitoring and Management Console)是一种基JMX(Java Management Extensions,即Java管理扩展)的可视化监视、管理工具。

通过JDK/bin目录下的"jconsole.exe"启动JConsole后,将自动搜索出本机运行的所有虚拟机进程。

2、VisualVM

VisualVM是更常用的可视化监控工具,它本身还具有插件扩展功能,因此功能非常强大,目前使用非常多。

需要先说明的是一些安装上的问题,虽然安装好jdk之后是会有一个VisualVM的程序在jdk的bin目录下,但是不建议使用jdk提供的这个,建议直接去官网下载最新的版本使用。

下载:

VisualVM: Download

插件下载:

VisualVM: Plugins Centers

相关推荐
猫头虎4 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
wgslucky5 小时前
jdk17 配置jvm参数中gc的日志及控制日志数量和大小
jvm·gc·-xlog
痴儿哈哈10 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
野犬寒鸦15 小时前
从零起步学习并发编程 || 第七章:ThreadLocal深层解析及常见问题解决方案
java·服务器·开发语言·jvm·后端·学习
闻哥17 小时前
Kafka高吞吐量核心揭秘:四大技术架构深度解析
java·jvm·面试·kafka·rabbitmq·springboot
星辰_mya19 小时前
Elasticsearch线上问题之慢查询
java·开发语言·jvm
蓝帆傲亦19 小时前
代码革命!我用Claude Code 3个月完成1年工作量,这些实战经验全给你
jvm·数据库·oracle
Codiggerworld1 天前
JVM内存模型——你的对象住在哪里?
jvm
马猴烧酒.1 天前
【面试八股|JVM虚拟机】JVM虚拟机常考面试题详解
jvm·面试·职场和发展
2301_790300961 天前
Python数据库操作:SQLAlchemy ORM指南
jvm·数据库·python