文章目录

  • JDK 命令行工具
    • jps:查看所有 Java 进程
    • jstat: 监视虚拟机各种运行状态信息
    • jinfo: 实时地查看和调整虚拟机各项参数
    • jmap:生成堆转储快照
    • jhat: 分析 heapdump 文件
    • jstack :生成虚拟机当前时刻的线程快照

写在前面:
我是「境里婆娑」。我还是从前那个少年,没有一丝丝改变,时间只不过是考验,种在心中信念丝毫未减,眼前这个少年,还是最初那张脸,面前再多艰险不退却。
写博客的目的就是分享给大家一起学习交流,如果您对 Java感兴趣,可以关注我,我们一起学习

JDK 命令行工具

这些命令在 JDK 安装目录下的 bin 目录下:

  • jps (JVM Process Status): 类似 UNIX 的 ps 命令。用户查看所有 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息;
  • jstat( JVM Statistics Monitoring Tool): 用于收集 HotSpot 虚拟机各方面的运行数据;
  • jinfo (Configuration Info for Java) : Configuration Info forJava,显示虚拟机配置信息;
  • jmap (Memory Map for Java) :生成堆转储快照;
  • jhat (JVM Heap Dump Browser ) : 用于分析 heapdump 文件,它会建立一个 HTTP/HTML 服务器,让用户可以在浏览器上查看分析结果;
  • jstack (Stack Trace for Java):生成虚拟机当前时刻的线程快照,线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合。

jps:查看所有 Java 进程

jps(JVM Process Status) 命令类似 UNIX 的 ps 命令。

jps:显示虚拟机执行主类名称以及这些进程的本地虚拟机唯一 ID(Local Virtual Machine Identifier,LVMID)。jps -q :只输出进程的本地虚拟机唯一 ID。

C:\Users\Administrator>jps
10496
12976 SpringBootBasicConfigurationApplication
1432 Launcher
8984
12348 KotlinCompileDaemon
12764 Jps
13276 RemoteMavenServer

jps -l:输出主类的全名,如果进程执行的是 Jar 包,输出 Jar 路径。

C:\Users\Administrator>jps -l
10496
12976 com.sl.SpringBootBasicConfigurationApplication
1432 org.jetbrains.jps.cmdline.Launcher
8984
12348 org.jetbrains.kotlin.daemon.KotlinCompileDaemon
13276 org.jetbrains.idea.maven.server.RemoteMavenServer
4108 sun.tools.jps.Jps

jps -v:输出虚拟机进程启动时 JVM 参数。

jps -m:输出传递给 Java 进程 main() 函数的参数。

jstat: 监视虚拟机各种运行状态信息

jstat(JVM Statistics Monitoring Tool) 使用于监视虚拟机各种运行状态信息的命令行工具。 它可以显示本地或者远程(需要远程主机提供 RMI 支持)虚拟机进程中的类信息、内存、垃圾收集、JIT 编译等运行数据,在没有 GUI,只提供了纯文本控制台环境的服务器上,它将是运行期间定位虚拟机性能问题的首选工具。

jstat 命令使用格式:

jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

比如 jstat -gc -h3 31736 1000 10表示分析进程 id 为 31736 的 gc 情况,每隔 1000ms 打印一次记录,打印 10 次停止,每 3 行后打印指标头部。

常见的 option 如下:

  • jstat -class vmid :显示 ClassLoader 的相关信息;
  • jstat -compiler vmid :显示 JIT 编译的相关信息;
  • jstat -gc vmid :显示与 GC 相关的堆信息;
  • jstat -gccapacity vmid :显示各个代的容量及使用情况;
  • jstat -gcnew vmid :显示新生代信息;
  • jstat -gcnewcapcacity vmid :显示新生代大小与使用情况;
  • jstat -gcold vmid :显示老年代和永久代的行为统计,从jdk1.8开始,该选项仅表示老年代,因为永久代被移除了;
  • jstat -gcoldcapacity vmid :显示老年代的大小;
  • jstat -gcpermcapacity vmid :显示永久代大小,从jdk1.8开始,该选项不存在了,因为永久代被移除了;
  • jstat -gcutil vmid :显示垃圾收集信息;
    另外,加上 -t参数可以在输出信息上加一个 Timestamp 列,显示程序的运行时间。

jinfo: 实时地查看和调整虚拟机各项参数

jinfo vmid :输出当前 jvm 进程的全部参数和系统属性 (第一部分是系统的属性,第二部分是 JVM 的参数)。

jinfo -flag name vmid :输出对应名称的参数的具体值。比如输出 MaxHeapSize、查看当前 jvm 进程是否开启打印 GC 日志 ( -XX:PrintGCDetails :详细 GC 日志模式,这两个都是默认关闭的)。

C:\Users\Administrator>jinfo -flag MaxHeapSize 12976
-XX:MaxHeapSize=2067791872C:\Users\Administrator>jinfo -flag PrintGC 12976
-XX:-PrintGC

使用 jinfo 可以在不重启虚拟机的情况下,可以动态的修改 jvm 的参数。尤其在线上的环境特别有用,请看下面的例子:

jinfo -flag [+|-]name vmid 开启或者关闭对应名称的参数。

C:\Users\Administrator>jinfo -flag +PrintGC 12976C:\Users\Administrator>jinfo -flag PrintGC 12976
-XX:-PrintGC

jmap:生成堆转储快照

jmap(Memory Map for Java)命令用于生成堆转储快照。 如果不使用 jmap 命令,要想获取 Java 堆转储,可以使用 “-XX:+HeapDumpOnOutOfMemoryError” 参数,可以让虚拟机在 OOM 异常出现之后自动生成 dump 文件,Linux 命令下可以通过 kill -3 发送进程退出信号也能拿到 dump 文件。

jmap 的作用并不仅仅是为了获取 dump 文件,它还可以查询 finalizer 执行队列、Java 堆和永久代的详细信息,如空间使用率、当前使用的是哪种收集器等。和jinfo一样,jmap有不少功能在 Windows 平台下也是受限制的。

示例:将指定应用程序的堆快照输出到桌面。后面,可以通过 jhat、Visual VM 等工具分析该堆文件。

C:\Users\Administrator>jmap -dump:format=b,file=C:\Users\Administrator\Desktop\heap.hprof 12976
Dumping heap to C:\Users\Administrator\Desktop\heap.hprof ...
Heap dump file created

jhat: 分析 heapdump 文件

jhat 用于分析 heapdump 文件,它会建立一个 HTTP/HTML 服务器,让用户可以在浏览器上查看分析结果。

C:\Users\Administrator>jhat C:\Users\Administrator\Desktop\heap.hprof
Reading from C:\Users\Administrator\Desktop\heap.hprof...
Dump file created Sat Mar 20 10:46:30 CST 2021
Snapshot read, resolving...
Resolving 546760 objects...
Chasing references, expect 109 dots.............................................................................................................
Eliminating duplicate references.............................................................................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.

访问 http://localhost:7000/

jstack :生成虚拟机当前时刻的线程快照

jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合.

生成线程快照的目的主要是定位线程长时间出现停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的原因。线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做些什么事情,或者在等待些什么资源。
使用说明:
jstack 9256

JDK 监控和故障处理工具总结相关推荐

  1. jstack 线程状态分析_面试官:说说你是怎么用JDK监控和故障处理工具的吧?例如jstack...

    当JVM发生故障的时候,能应用JDK命令行工具对JVM进行监控和故障诊断是Java开发人员必备的技能之一.本篇文章将为大家带来JVM进行监控和故障诊断常用的命令行工具,如下图: 其中jps.jstat ...

  2. JDK 监控和故障处理工具

    文章目录 1.jps: 查看所有 Java 进程 2.jstat: 监视虚拟机的运行状态信息 3.jinfo: 查看和调整虚拟机配置参数信息 拓展 4.jmap: 导出内存映象文件(dump文件) 4 ...

  3. jdk监控与故障处理工具

    jps:JVM Process Status Tool 显示指定系统内所有的HotSpot虚拟机进程 jstat:JVM Statistics Monitoring Tool, 用于收集HotSpot ...

  4. Java虚拟机:性能监控与故障处理工具

    概述: 给一个系统定位问题的时候,知识.经验是关键基础,数据是依据.工具是运用知识处理数据的手段.这里说的数据包括:运行日志.异常堆栈.GC日志.线程快照文件(threaddump/javacore文 ...

  5. jvm(4)-虚拟机性能监控与故障处理工具

    [0]README 0.1)本文文字描述转自 "深入理解jvm",旨在了解 虚拟机性能监控与故障处理工具的基础知识(仅仅在于了解): [1]概述 1)给一个系统定位问题的时候,知识 ...

  6. 《深入理解JVM.2nd》笔记(四):虚拟机性能监控与故障处理工具

    文章目录 概述 JDK的命令行工具 jps:虚拟机进程状况工具 jstat:虚拟机统计信息监视工具 jinfo:Java配置信息工具 jmap:Java内存映像工具 jhat:虚拟机堆转储快照分析工具 ...

  7. 第4章 虚拟机性能监控与故障处理工具

    4.1 概述 一切尽在掌控之中(是不是暴露啥),学习JDK提供哪些免费,被我们忽略的工具 4.2 JDK的命令行工具 用的最多的就是java.exe  和 javac.exe ,其实你打开bin下更多 ...

  8. JYM虚拟机性能监控与故障处理工具

    虚拟机性能监控与故障处理工具 一.jps:虚拟机进程状况工具 常用指令 二.jstat:虚拟机统计信息监视工具 常用指令 三.jinfo:配置信息工具 四.jmap:Java内存映像工具 常用指令 五 ...

  9. JVM-11虚拟机性能监控与故障处理工具之【JDK的可视化工具-JConsole】

    文章目录 思维导图 概述 JConsole: Java监视与管理平台 启动jconsole 内存监控示例 VM ARGS 代码 JConsole监控展示及说明 扩展问题 没有指定-Xmn,如何确定新生 ...

最新文章

  1. hdu3585 二分最大团(dp优化)
  2. getchar的利用
  3. 高并发系统 3 大利器之缓存
  4. [转]Sql Server参数化查询之where in和like实现详解
  5. 闲鱼公布2021年度十大“无用”商品:网友买前壮志 买后吃灰
  6. 线段树,最大值查询位子(个人模版)
  7. EPLAN P8 2.3软件安装
  8. WinRAR的命令行模式用法介绍
  9. Hprose轻松实现远程过程调用(RPC)
  10. 最新elasticsearch版本与jdk版本对应图-2022-08-01
  11. GDT中的轮廓度标注
  12. App自动化测试之企微打卡、快手刷金币
  13. 大白话解读什么是七层网络协议,TCP/IP五层模型通信知识(一)
  14. 智多星骗子行为让人发指
  15. vue 组件中图片地址,图片获取
  16. 5GC 关键技术之网络切片
  17. 对于interrupt,interrupted 和 isInterrupted的一些理解
  18. find 查找文件或文件夹命令find
  19. 亚马逊后台网页提示HTTP Status 400 – Bad Request无法登陆的解决办法
  20. thinkphp实现用户注册时邮箱激活

热门文章

  1. MFC之ComboBox控件用法
  2. 三星s8清除html查看器,三星S8手机怎么双清 清理手机数据方法介绍 - Iefans
  3. 学业水平考试网登录_江西学业水平考试成绩查询登录入口
  4. php语言培训费用,PHP语言编程的优势在哪里
  5. c++17(22)-reinterpret_cast和new动态空间内存申请
  6. C指针原理(39)-GLIB
  7. vb.net2019- 目录
  8. “数字强市 数创未来” | 山东省数据应用创新创业大赛烟台赛场火热招募中!...
  9. 七夕节,程序员们都怎么哄女朋友开心?
  10. CUDA 编程上手指南:CUDA C 编程及 GPU 基本知识