排查JVM的一些命令

查看JVM相关信息的方法

环境: Win10, jdk17

查看端口的Pid

bash 复制代码
netstat -ano | findstr <端口号>

列出当前运行的JVM进程

bash 复制代码
## 用于输出JVM中运行的进程状态信息。通过jps,可以快速获取Java进程的PID(进程标识符),
## 从而为后续使用其他JVM工具(如jstack、jmap等)进行诊断提供便利‌
jps

堆栈跟踪

bash 复制代码
## 主要用于生成Java虚拟机当前时刻的线程堆栈快照。这对于分析线程死锁和长时间运行的线程非常有用。
## jstack可以定位到线程堆栈,根据堆栈信息可以定位到具体代码
jstack <pid>

查看内存信息

bash 复制代码
jhsdb jmap --pid <pid>

如果直接使用jmap可能会出现错误,网上查了一下是版本问题

查看JVM配置参数

bash 复制代码
## 实时查看和调整虚拟机的各项参数。使用jinfo -flag可以在运行期修改部分可写的虚拟机参数
jinfo -flags <pid>

## 查看参数信息
jinfo <pid>

查看GC统计数据

bash 复制代码
# 1000表示每秒打印一次
jstat -gc <pid> 1000

使用jconsole

JConsole是JDK自带的一个监视、管理和监控Java应用程序的工具

启动jConsole

bash 复制代码
jconsole

选择需要查看的服务

查看堆栈,线程,内存,cpu等信息

查看新生代,老年代,永久代等信息

自带jvisualVM

jvisualvm是JDK(8)自带的一个可视化工具,主要用于查看JVM运行时的信息,比如堆内存、线程、GC信息等

java 8的直接执行jvisualVM命令即可

安装visual GC插件

由于网络问题可能会遇到下载不下来的情况

找到自己JDK对应的插件连接下载对应的visual GC就好了

手动导入插件

这样就可以看到JVM的实时变化了,排查频繁GC,OOM的时候就会比较明显。或者优化JVM的时候看一下

查看线程信息

CPU,线程,堆,元空间等信息

下载最新jvisualVM

jdk17没有就需要自己下载一下。然后根据下载的visualVM版本下载对应的插件版本
下载地址

下载好之后,解压出来就可以用了

修改visualvm_2110/visualvm_2110/etc/visualvm.conf配置文件

替换自己的jdk安装路径

保存后双击即可使用

安装插件(搞定网络问题后)

相关推荐
黄雪超2 小时前
JVM——从JIT到AOT:JVM编译器的云原生演进之路
java·开发语言·jvm
小韩学长yyds15 小时前
JVM 基础 - JVM 内存结构
jvm
oioihoii16 小时前
C++23 已移除特性解析
java·jvm·c++23
怡人蝶梦18 小时前
Java大厂后端技术栈故障排查实战:Spring Boot、Redis、Kafka、JVM典型问题与解决方案
java·jvm·redis·elk·kafka·springboot·prometheus
qx0918 小时前
sqlite3的封装
jvm·数据库·sqlite
煎饼皮皮侠20 小时前
利用aqs构建一个自己的非公平独占锁
java·jvm·aqs
黄雪超1 天前
JVM——JVM运行时数据区的内部机制是怎样的?
java·开发语言·jvm
好名字更能让你们记住我1 天前
Linux多线程(六)之线程控制4【线程ID及进程地址空间布局】
linux·运维·服务器·开发语言·jvm·c++·centos
怡人蝶梦1 天前
Java后端技术栈问题排查实战:Spring Boot启动慢、Redis缓存击穿与Kafka消费堆积
java·jvm·redis·kafka·springboot·prometheus
居居飒2 天前
深入理解 JDK、JRE 和 JVM 的区别
java·开发语言·jvm