java故障处理(一)基础命令行工具

 

一、基础命令行工具

1.jps:虚拟机进程状况工具

可以列出本机正在运行的虚拟机进程,并显示主类

1.1.选项:
选项作用
-q 省略主类,只显示id
-l 显示主类全名,或jar包路径
-m 显示传递给主类main方法的参数
-v 输出jvm启动时所有参数

2.jstat:虚拟机统计信息监控

用于监视虚拟机运行状态的命令行工具,可以显示本地或远程进程的类加载、内存、垃圾收集,即时编译等运行时数据;

使用jstat工具在纯文本状态下监视虚拟机状态的变化, 在用户体验上也许不如JMC、 VisualVM等可视化的监视工具直接以图表展现那样直观, 但在实际生产环境中不一定可以使用图形界面, 直接在控制台中使用jstat命令依然是一种常用的监控方式

2.1.命令行格式:
jstat [ option vmid [interval[s|ms] [count]] ]
参数interval和count代表查询间隔和次数, 如果省略这2个参数, 说明只查询一次
选项option代表用户希望查询的虚拟机信息, 主要分为三类: 类加载、 垃圾收集、 运行期编译状况。
2.2.选项
选项作用
-class 监视类加载、卸载数量,及类加载所耗时间
-gc 监视java堆,含Eden区,2个survivor区,老年代、永久代容量,已用空间,gc时间
-gccapacity 与-gc相同,主要输出java堆各区使用到的最大最小空间
-gcutil 与-gc相同,主要输出已用空间在总空间的占比
-gccause 与-gcutil相同,但会输出上次gc的原因
-gcnew 监视新生代垃圾收集状况
-gcnewcapacity 与-gcnew相同,主要关注使用的最大最小空间
-gcold 监视老年代垃圾收集状况
-gcoldcapacity 与-gcold相同,主要关注使用的最大最小空间
-gcpermcapacity 监视永久代使用最大最小空间
-compiler 输出即时编译器编译的方法和耗时
-printcompilation 输出已被编译过的方法

3.jinfo:java配置信息

使用jps命令的-v参数可以查看虚拟机启动时显式指定的参数列表, 但如果想知道未被显式指定的参数的系统默认值, 就只能使用jinfo的-flag选项进行查询了

4.jmap:java内存映像工具

jmap用于生产堆转储快照

4.1.选项
选项作用
-dump 生产java堆内存转储快照
-finalizerinfo 显示等待finalizer线程执行finalize的对象,只在Linux有用
-heap 显示java堆详细信息,只在Linux有用
-histo 显示堆对象统计信息,包括类、实例、合计容量
-permstat 显示永久代内存数量,只在Linux有用
-F 强制生成dump快照
4.2.案例
jmap -dump:format=b,file=eclipse.bin 3500

5.jstack:java堆栈跟踪工具

用于生成虚拟机当前时刻的线程快照。 线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合, 生成线程快照的目的通常是定位线程出现长时间停顿的原因, 如线程间死锁、 死循环、 请求外部资源导致的长时间挂 起等, 都是导致线程长时间停顿的常见原因。 线程出现停顿时通过jstack来查看各个线程的调用堆栈,就可以获知没有响应的线程到底在后台做些什么事情, 或者等待着什么资源。

5.1.选项
选项作用
-F 强制输出线程堆栈
-l 除堆栈外,显示关于锁的附加信息
-m 如果调用本地方法,可以显示c/c++堆栈

 

 

posted @   Mars.wang  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
历史上的今天:
2022-04-13 图数据库neo4j部署-linux
点击右上角即可分享
微信分享提示