问题定位:

  除了个人经验,知识,工具也是很重要的,通过数据进行问题分析,包括:运行日志、异常堆栈、GC日志、线程快照(threaddump/javacore文件

)、堆转储快照(heapdump/hprof文件)等。加上虚拟机监控和分析工具进行分析数据、定位解决问题

jdk所有命令参数详解:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/

jdk命令行工具

  在java_home的bin目录有很多重要的工具,除了常用的java.exe、javac.exe、javap.exe外,还有命令行工具和可视化工具,而且体积相对较小

jps:虚拟机进程状况工具,和Linux中ps功能相似

格式:jps [ options ] [ hostid ]参数:
-q 不输出类名、Jar名和传入main方法的参数
-m 输出传入main方法的参数
-l 输出main类或Jar的全限名
-v 输出传入JVM的参数

不指定hostid就默认为当前主机或服务器

 

jstat:虚拟机统计信息监控工具

jstat命令格式:
jstat [ option vmid [ interval [ s | ms ] [ count ] ] ]

vmid:对于本地虚拟机进程而言,就是虚拟机ID,在Linux上面就是进程ID

interval和count:分别表示查询间隔和次数,如果省略这两个参数,说明只查询一次

假设需要每250毫秒查询一次进程2764的垃圾收集情况,一共查询20次,那命令应当是:jstat-gc 2764 250 20

$ jstat -gc 6128 250 10S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
5120.0 5120.0 4696.0  0.0   33280.0  32398.5   87552.0      88.0    16640.0 16018.7 2048.0 1928.9      2    0.010   0      0.000    0.010
5120.0 5120.0 4696.0  0.0   33280.0  32398.5   87552.0      88.0    16640.0 16018.7 2048.0 1928.9      2    0.010   0      0.000    0.010
5120.0 5120.0 4696.0  0.0   33280.0  32398.5   87552.0      88.0    16640.0 16018.7 2048.0 1928.9      2    0.010   0      0.000    0.010
5120.0 5120.0 4696.0  0.0   33280.0  32398.5   87552.0      88.0    16640.0 16018.7 2048.0 1928.9      2    0.010   0      0.000    0.010

C:总容量

U:Use

E:Eden Space

S0:Survivor0

S1:Survivor1

O:old Space

P:Permanent Space   jdk1.8已经取消

YGC:Young GC 也就是Minor GC

FGC:Full GC

GCT:GC总共花费时间

jinfo:java配置信息工具

  用于实时查看和调整虚拟机的各项参数。

命令格式:jinfo [option] pid

参数:-v 查看虚拟机启动时显式指定的参数列表-flag name=value 修改一部分运行期可修改的虚拟机参数值

jinfo -flag CMSInitiatingOccupancyFraction 1444
-XX:CMSInitiatingOccupancyFraction=85

jmap:内存映射工具

  用于生成堆转储快照heapdump/dump文件,还可以查看finalize执行队列、java堆和永久带的详细信息,如空间使用率、当前用的是那种收集器等

命令格式:jmap [option] vmid

jhat:虚拟机堆转储快照分析工具

jmap和jhat是联合使用的

查看某个进程的堆信息:

$ jmap -heap 6128
Attaching to process ID 6128, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.91-b15using thread-local object allocation.
Parallel GC with 8 thread(s)Heap Configuration:MinHeapFreeRatio         = 0MaxHeapFreeRatio         = 100MaxHeapSize              = 734003200 (700.0MB)NewSize                  = 44564480 (42.5MB)MaxNewSize               = 244318208 (233.0MB)OldSize                  = 89653248 (85.5MB)NewRatio                 = 2SurvivorRatio            = 8MetaspaceSize            = 21807104 (20.796875MB)CompressedClassSpaceSize = 1073741824 (1024.0MB)MaxMetaspaceSize         = 17592186044415 MBG1HeapRegionSize         = 0 (0.0MB)Heap Usage:
PS Young Generation
Eden Space:capacity = 34078720 (32.5MB)used     = 33176112 (31.639205932617188MB)free     = 902608 (0.8607940673828125MB)97.35140286959134% used
From Space:capacity = 5242880 (5.0MB)used     = 4808752 (4.5859832763671875MB)free     = 434128 (0.4140167236328125MB)91.71966552734375% used
To Space:capacity = 5242880 (5.0MB)used     = 0 (0.0MB)free     = 5242880 (5.0MB)0.0% used
PS Old Generationcapacity = 89653248 (85.5MB)used     = 90128 (0.0859527587890625MB)free     = 89563120 (85.41404724121094MB)0.10052954244334796% used5806 interned Strings occupying 492984 bytes.

 生成dump:

$ jmap -dump:live,format=b,file=/D/dump.dat 6128
Dumping heap to D:\dump.dat ...
Heap dump file created

dump出来的文件可以用jhat、MAT、VisualVM等工具查看:

$ jhat -port 8888  /D/dump.dat
Reading from D:/dump.dat...
Dump file created Tue May 14 11:03:21 CST 2019
Snapshot read, resolving...
Resolving 79676 objects...
Chasing references, expect 15 dots...............
Eliminating duplicate references...............
Snapshot resolved.
Started HTTP server on port 8888
Server is ready.

 在浏览器上面查看:

jstack:java堆栈跟踪工具

  生成虚拟机当前时刻的线程快照threaddump/javacore文件。线程快照是当前虚拟机内每一条线程正在执行的方法堆栈的集合,目的是线程出现

长时间停顿的原因,如线程死锁,请求外部资源长时间停顿。

命令格式:jstack  [option] vmid

参数:-F 当正常输出的请求不被响应时,强制输出线程堆栈-l 除了堆栈外,显示关于锁的附加信息-m 显示本地方法的堆栈(C/C++)

jdk可视化工具

JConsole:监视与管理控制台

  自动搜索本机运行的所有虚拟机进程,不需要自己使用jps来查询了

多个视图:
1、概述:jps
2、内存:jstat
3、线程:jstack

VisualVM:多合一故障处理工具,可以直接应用于生产环境,对应用程序的实例性能的影响很小

功能:
  1、实现虚拟机进程以及进程的配置、环境信息(jps、jinfo)
  2、监视应用程序的CPU、GC、堆、方法区以及线程的信息(jstat、jstack)
  3、dump以及分析堆转储快照(jmap、jhat)
  4、方法级的程序运行性能分析,找出被调用最多、运行时间最长的方法
  5、离线程序快照:手机程序的运行时配置、线程dump、内存dump等信息建立一个快照,可以将快照发送开发者处进行Bug反馈
  6、其他plugins的无线的可能性。。。。。

可视化工具个人使用不多,推荐一篇文章,可以看一下:http://www.cnblogs.com/ityouknow/p/6437037.html

转载于:https://www.cnblogs.com/huigelaile/p/10860372.html

java虚拟机(八)--java性能监控与故障处理工具相关推荐

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

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

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

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

  3. JVM-10虚拟机性能监控与故障处理工具之【JDK的命令行】

    文章目录 思维导图 概述 命令行工具 jps 虚拟机进程状况工具 概述 语法及使用 jstat 虚拟机统计信息监视工具 概述 语法及使用 jinfo Java配置信息工具 概述 语法及使用 jmap ...

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

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

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

    虚拟机性能监控与故障处理工具 概述 给一个系统定位问题时,知识.经验是关键基础,数据是依据,工具是运用知识处理数据的手段.这里的数据包括:运行日志.异常堆栈.GC日志.线程快照.堆转储快照等.使用适当 ...

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

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

  7. 《深入理解JAVA虚拟机》周志明 第三版 - 第四章 虚拟机性能监控、故障处理工具

    4.1 概述 恰当地使用虚拟机故障处理.分析的工具可以提升我们分析数据.定位并解决问题的效率. 4.2 基础故障处理工具 JDK的bin目录中有java.exe.javac.exe这两个命令行工具,还 ...

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

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

  9. 第4章 虚拟机性能监控、故障处理工具(上)

    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 4.1 概述 经过前面两章对于虚拟机内存分配与回收技术各方面的介绍,相信读者已经建立了一个比 ...

  10. 虚拟机性能监控、故障处理工具

    目录 基础故障处理工具 jps:虚拟机进程状况工具 jstat:虚拟机统计信息监视工具 jinfo:Java配置信息工具 jmap:Java内存映像工具 jhat:虚拟机堆转储快照分析工具 jstac ...

最新文章

  1. linux 编译sqlitecpp,编译安装sqlite3数据库
  2. 可以与空间耦合的神经网络分子微扰模型BeO
  3. 使用ffmpeg从mp4文件中提取视频流到h264文件中
  4. python语句结束标志_jinja2.exceptions.TemplateSyntaxError:预期标记“打印语句结束”,已“发布” - python...
  5. 十四、深入Python条件和循坏
  6. HDU 4339 Query
  7. volatile实现原理
  8. CDI中的事务异常处理
  9. 杭电2078复习时间
  10. rabbitmq之window环境启动
  11. WINDOWS SERVER 2003 R2 AD域控安装过程实践
  12. Thread线程notify方法的自我理解
  13. 软考信息系统项目管理师真题及答案之案例分析
  14. 蓝桥杯——等差素数列(c语言)
  15. C++ 设置字体颜色
  16. json 日期格式化
  17. css 设置层级关系,css层级关系怎么设置
  18. 【正交调制的通信的工程实现!!!】--比通原书讲得好多了,书上大都泛泛而谈!受益匪浅
  19. TensorFlow 2.9的零零碎碎(六)-模型训练和评价
  20. OI模板 卢卡斯定理

热门文章

  1. python xml etree_使用Python etree更新XML元素和属性值
  2. 普通html优化处理,iOS 数据优化之处理HTML字符串
  3. 在保护继承中基类的共有成员_c++中的继承
  4. 数据 到 端口 linux,linux如何查看某个端口接收到的数据
  5. SIFT: Distinctive Image Features from Scale-Invariant Keypoints
  6. VS2008中的一些命令窗口
  7. 【Python】简单实现显示图片的高斯和中值滤波效果
  8. python函数返回值的应用
  9. java如何多表断网,java Web如何离线使用并进行数据同步
  10. mysql5.7.20 sql mode_MySQL5.7中的sql_mode默认值带来的坑及解决方法