java虚拟机(八)--java性能监控与故障处理工具
问题定位:
除了个人经验,知识,工具也是很重要的,通过数据进行问题分析,包括:运行日志、异常堆栈、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 10
S0C 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-b15 using thread-local object allocation.
Parallel GC with 8 thread(s) Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 734003200 (700.0MB)
NewSize = 44564480 (42.5MB)
MaxNewSize = 244318208 (233.0MB)
OldSize = 89653248 (85.5MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 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 Generation
capacity = 89653248 (85.5MB)
used = 90128 (0.0859527587890625MB)
free = 89563120 (85.41404724121094MB)
0.10052954244334796% used 5806 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
java虚拟机(八)--java性能监控与故障处理工具的更多相关文章
- 《深入理解Java虚拟机》(四)虚拟机性能监控与故障处理工具
虚拟机性能监控与故障处理工具 详解 4.1 概述 本文参考的是周志明的 <深入理解Java虚拟机> 第四章 ,为了整理思路,简单记录一下,方便后期查阅. JDK本身提供了很多方便的JVM性 ...
- java虚拟机之性能监控与故障处理工具
sun jdk性能监控与故障处理工具 jps: 可以列出正在运行的虚拟机进程,并显示虚拟机执行主类名称以及这些进程的本地虚拟机唯一id. jstat: 用于监视虚拟机各种运行状态信息的命令航工具.它可 ...
- JYM虚拟机性能监控与故障处理工具
虚拟机性能监控与故障处理工具 一.jps:虚拟机进程状况工具 常用指令 二.jstat:虚拟机统计信息监视工具 常用指令 三.jinfo:配置信息工具 四.jmap:Java内存映像工具 常用指令 五 ...
- jvm性能监控与故障处理工具
jdk为我们提供了一系列的jvm性能监控和故障处理工具,在这里根据学习进度进行整理记录.便于之后查阅 1.jps 虚拟机进程工具 类似于Linux系统中的ps命令,用于查看虚拟机进程,常用的有以下功 ...
- 第八章 JVM性能监控与故障处理工具(2)
注意:该篇博客主要记录自<深入理解java虚拟机(第二版)> 说明:关于命令行的JVM性能监控与故障处理工具见<第七章 JVM性能监控与故障处理工具(1)> 1.图像化的故障处 ...
- 《深入理解Java虚拟机》虚拟机性能监控与故障处理工具
上节学习回顾 从课本章节划分,<垃圾收集器>和<内存分配策略>这两篇随笔同属一章节,主要是从理论+实验的手段来讲解JVM的内存处理机制.好让我们对JVM运行机制有一个良好的概念 ...
- JVM(4) 虚拟机性能监控与故障处理工具
1. Sun JDK 监控和故障处理工具 1)jps:JVM process Status Tool,显示指定系统内所有的HotSpot虚拟机进程.可以列出正在运行的虚拟机进程,并显示虚拟机执行主类( ...
- 第七章 JVM性能监控与故障处理工具(1)
1.定位系统问题 依据 GC日志 堆转储快照(heapdump/hprof文件) 线程快照(threaddump/javacore文件) 运行日志 异常堆栈 分析依据的工具 jps:显示指定系统内的所 ...
- 虚拟机性能监控与故障处理工具(深入理解java虚拟机三)
JDK自带的工具可以方便的帮助我们处理一些问题,包括查看JVM参数,分析内存变化,查看内存区域,查看线程等信息. 我们熟悉的有java.exe,javac.exe,javap.exe(偶尔用),jps ...
随机推荐
- SP2-0734: 未知的命令开头 "imp scott/..." - 忽略了剩余的行。
Oracle数据导入报错:SP2-0734: 未知的命令开头 "imp scott/..." - 忽略了剩余的行. 原因:进入sqlplus里是不能运行imp的(sqlplus不认 ...
- Android学习笔记-tween动画之java实现
Android动画分为Tween动画和Frame动画,近期学习了,体tween动画,现在讲学习的心得以及相关知识介绍如下. Tween又称为补间动画,可以把对象进行缩小.放大.旋转和渐变等操作. ...
- Robot Framework 初学者上手资料
首先要声明一下这是从http://www.cnblogs.com/yufeihlf/p/5949984.html拷贝的. 在这里只是自己的一个笔记,方便日后添加.修改内容. 总结下Robot Fram ...
- [Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程
本文转载自:[Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程 1 前言 经过3天奋战,终于在Ubuntu 16.04上把Android 6. ...
- sql compare options
sql compare project's options Add object existence checks Use DROP and CREATE instead of ALTER Ignor ...
- Angular学习日记(一) 开发环境的搭建
从看视频到自己尝试,总会走很多的弯路才能成功. 首先:装最新版的nodejs. 第一种:使用npm安装 首先设置taobao镜像,npm config set registry https://reg ...
- 基于ELK的传感器数据分析练习
目录 Sensor Data Analytics Application 数据构成 数据模型设计 Logstash配置 Kibana可视化 Sensor Data Analytics Applicat ...
- 堆排序的C实现
这几天有点抵触情绪,看过了快速排序还有一些别的东西,但是一点都不想写有点复杂的代码0 0拖到了今天终于写了前几天就应该自己写一下的堆排序,完全用C语言写的,下面把代码贴一下.很多地方写得并不好,不过已 ...
- 在sql语句中使用关键字
背景 开发过程中遇到了遇到了一句sql语句一直报错,看了一下字段名和表名都对应上了,但是还是一直报错 sql语句如下: update table set using = ""hh ...
- web自动化测试—selenium游览器多窗口操作
# coding=utf-8'''web游览器多窗口操作: 获取当前窗口句柄 current_window_handle 获取所有窗口句柄 window_handles 切换窗口 switch_to_ ...