JDK自带JVM性能调优监控工具jps、jstack、jmap、jhat、jstat
原文地址:https://www.jianshu.com/p/db954cb968fb
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat位于JDK的bin目录,这些工具短小精悍,常用于线上系统的分析监测。
用来解决如下问题
- OutOfMemoryError,分析内存不足的原因
- 内存泄漏
- 线程死锁
- 锁竞争
- java线程消耗CPU过高
jps(Java Virtual Machine Process Status Tool)
JVM 进程状态工具,主要用来输出JVM中运行的进程状态信息
语法格式:
演示如下:
打印多项
jstack(java stack trace)
用来查看某个Java进程内的线程堆栈信息,实时监测系统运行时线程栈信息,而不用暂停程序排查,常用于线上系统的问题排查,一般都是间隔一段时间使用jstack命令打印出当前系统实时快照,然后比对线程在在锁上的执行状态来判断系统是否存在死锁、过度竞争等问题。
语法格式:
演示:
步骤1:top 命令查看按CPU使用率降序进程ID
其实整个系统比较闲,拿来做实验,最占CPU的是进程ID为12622的进程。
步骤2 :top -Hp pid 命令查看进程中各个线程占用CPU的情况。
可见最占CPU的是ID为13037的线程
与top -Hp pid等价的命令:ps -Lfp pid或者ps -mp pid -o THREAD, tid, time。
步骤3:printf "%x\n" 13037 获取16进制nid
将十进制13037 转换为16进制为32ed
步骤4:使用jstack命令分析线程栈信息
- jstack -l pid 查看某一JVM进程的所有线程的信息
利用linux输出重定向,将线程信息输入到pid12622.dump文件中
然后使用more命令查看此文件部分信息,以后对这个dump文件信息进行解析
- jstack -l pid | grep nid查看某一JVM进程的指定线程的信息
利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推,grep是支持正则表达式的实用文本搜索工具。
jstat(Java Virtual Machine Statistics Monitoring Tool)
JVM统计监测工具, 常用来实时监测系统堆的使用情况,以及GC信息、编译信息、类加载信息,常用来判断系统JVM参数是否设置合理,作为系统参数调优的信息统计工具。
语法:
根据jstat统计的维度不同,可以使用如下表中的选项进行不同维度的统计,不同的操作系统支持的选项可能会不一样,可以通过-options选项,查看不同操作系统所支持选项。
jstat -option获取系统支持的选项
选项说明
演示
列名信息参考 http://blog.csdn.net/fenglibing/article/details/6411951
JVM堆内存布局(JDK1.7及之前,JDK1.8已经移除永久代i,而使用元数据,元数据属于堆外内存,但是也间接被GC管理)

说明:
jmap(Memory Map)和jhat(Java Heap Analysis Tool)
jmap用来查看堆内存(JVM中各个代的内存情况,对象占用情况)使用状况,还可以导出整个JVM的内存信息,一般结合jhat使用。
常用命令格式(注意64位JDK,需要加每条命令要加 -J-d64):
jmap -heap [pid] 查看整个JVM中内存使用情况(还含有JDK版本,GC策略相关等)。
需要注意当使用CMS GC时 jmap -heap命令可能导致Java进程被挂起
jmap -histo [pid]
查看JVM堆中存活对象的详细使用情况,常用于分析OutOfMemory
jmap -dump:format=b, file=fileName [pid]
将整个JVM内存信息以二进制的形式导出到指定文件,这个二进制文件可以通过JHAT来分析
分析内存快照
jhat [file]
分析内存占用,对象引用关系等, J-Xmx1024意思是将最大堆参数-Xmx1024传递给启动jhat分析的JVM进程的。
通过浏览器访问 http:ip:7000地址,进行分析
首页按包进行分组,有全限定类名和此类加载到永久代的堆地址
点击链接查看指定类的的加载信息,继承信息,数据域、引用信息,以及创建的对象实例信息
本文参考如下链接,只是对这些工具的总结笔记
参考以及拓展链接
R大(莫枢)借HSDB来探索HotSpot VM的运行时数据
Thread dump 分析综述
http://blog.csdn.net/fenglibing/article/details/6411940
http://www.open-open.com/lib/view/open1390916852007.html
http://blog.csdn.net/qq_16811963/article/details/52997178
作者:zhanglbjames
链接:https://www.jianshu.com/p/db954cb968fb
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
JDK自带JVM性能调优监控工具jps、jstack、jmap、jhat、jstat的更多相关文章
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof
JVM性能调优监控工具jps.jstack.jmap.jhat.jstat.hprof
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jstack.jmap.jhat.jstat.hprof等小巧的工具,本博客希望 ...
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解(转VIII)
JVM本身就是一个java进程,一个java程序运行在一个jvm进程中.多个java程序同时运行就会有多个jvm进程.一个jvm进程有多个线程至少有一个gc线程和一个用户线程. JDK本身提供了很多方 ...
- 【转】JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
http://www.cnblogs.com/therunningfish/p/5524238.html JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsol ...
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat, hprof使用详解
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jstack.jmap.jhat.jstat等小巧的工具,本博客希望能起抛砖引玉之用,让 ...
- JVM性能调优监控工具——jps、jstack、jmap、jhat、jstat、hprof使用详解
摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jstack.jmap.jhat.jstat.hprof等小巧的工具,本博客希望 ...
- JVM 性能调优监控工具 jps、jstack、jmap、jhat、jstat、hprof 使用详解
转自: https://my.oschina.net/feichexia/blog/196575 摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConso ...
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、jinfo、jconsole使用详解
JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jstack.jmap.jhat.jstat等小巧的工具,本博客希望能起抛砖引玉之用,让 ...
- 《转》:JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
原链接:https://my.oschina.net/feichexia/blog/196575 现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 ...
随机推荐
- Atitit 基于图片图像 与文档混合文件夹的分类
Atitit 基于图片图像 与文档混合文件夹的分类 太小的文档(txt doc csv exl ppt pptx)单独分类 Mov10KminiDoc 但是可能会有一些书法图片迁移,因为他们很微小,需 ...
- 提升 web 应用程序的性能(一)
提升 web 应用程序的性能,找出瓶颈,加快客户端内容的速度. 作为 web 用户,我们知道页面加载或刷新的速度对其成功至关重要.本文将帮助您更好地理解影响 web 应用程序性能的因素.学 ...
- [POI2010]CHO-Hamsters
KMP暴力求出next数组后 实际上是一个最短路问题,floyed搞一搞 然而会TLE 矩阵优化一下即可(倍增floyed) KMP在弱数据下可以AC..正解请看其他人博客 # include < ...
- element ui表格相同内容自动合并
一开始觉得合并单元格很困难,什么鬼,后来仔细查看api,发现是可以实现的,特此记录下,直接看代码, 项目需求是第一列和第二列还有第16列需要相同内容进行合并,所以判断条件是不同的: 实现后效果如下: ...
- win2003无线网卡驱动无法安装解决方法
Windows 2003 Server对无线网卡的pci资源分配出了问题,而笔记本bios中屏蔽了pci配置项,无法修改. 打开资源管理器菜单,工具-文件夹选项-显示,去掉“隐藏受保护的操作系统文件” ...
- Fedora归档管理器支持Rar、7Z
最新文章:Virson's Blog 方法: 在Fedora下如何安装 RAR 压缩/解压缩程序 (RAR)? RAR格式压缩包解压 命令:yum install unrar 7z格式压缩包解压 yu ...
- Windows10系统一键结束所有运行程序
当电脑及其卡顿的时候,想打开任务管理器关掉所有运行的程序的时候,也会变得及其困难.因此之前你如果有犀利的小程序设置,这都不会是问题. 1)空白处右键-新建-快捷方式 2)将下列代码复制到下列框中(注意 ...
- this 与 super 反复问题?
我们都知道 this 和 super keyword,在 调用 构函数的时候, 都必须写在第一行中. this 调用的是当前的类的构造函数. super 调用的是父类的构造函数! this和supe ...
- Android -- service 服务的创建与使用,生命周期,电话监控器
1. 为什么使用service 应用程序 : 一组组件(activity service provider receiver)的集合. 一般情况 一个应用程序 会对应一个进程. 一般情况 关闭掉应用 ...
- 【C/C++学院】0723-32位与64位/调戏窗体程序/数据分离算法/内存检索/二分查找法/myVC
[送给在路上的程序猿] 对于一个开发人员而言,能够胜任系统中随意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并能够运用到系统中,由此简化系统的开发,是其架构生涯的第一步. ...