JDK 自带的性能监控工具
JDK安装完后,其内置了许多的监控工具,常用的有jvisualvm,jconsole,jps,jmap,jinfo,jstat,jstack,这些命令都在jdk安装的bin目录下:
1、jvisualvm
一款GUI监控工具,可以对正在运行的java应用程序进行全面的监控分析,可以对cpu,heap size,线程等监控
2、jconsole
基础功能和jvisualvm差不多,可以对对cpu,heap size,线程等监控
3、jps
查看JVM里面所有的进程的具体状态,包括进程id,进程启动的路径等
- # jps
- Bootstrap
- Jps
- Application
4、jmap
打印出jvm堆内的对象情况,可以观察到New Generation(Eden Space,From Space,To Space),tenured generation,Perm Generation的内存使用情况。
基本参数:基本参数可通过jmap -help查看,以下各个指令一样。
-dump:[live,]format=b,file=<filename> 使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.
-finalizerinfo 打印正等候回收的对象的信息.
-heap 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况.
-histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.
-permstat 打印classload和jvm heap长久层的信息. 包含每个classloader的名字,活泼性,地址,父classloader和加载的class数量. 另外,内部String的数量和占用内存数也会打印出来.
-F 强迫.在pid没有相应的时候使用-dump或者-histo参数. 在这个模式下,live子参数无效.
-h | -help 打印辅助信息
-J 传递参数给jmap启动的jvm.
pid 需要被打印配相信息的java进程id,可以用jps查问.
- # jmap -heap
- Attaching to process ID , please wait...
- Debugger attached successfully.
- Server compiler detected.
- JVM version is 25.181-b13
- using thread-local object allocation.
- Parallel GC with thread(s)
- Heap Configuration:
- MinHeapFreeRatio =
- MaxHeapFreeRatio =
- MaxHeapSize = (.0MB)
- NewSize = (.5MB)
- MaxNewSize = (.5MB)
- OldSize = (.5MB)
- NewRatio =
- SurvivorRatio =
- MetaspaceSize = (.796875MB)
- CompressedClassSpaceSize = (.0MB)
- MaxMetaspaceSize = MB
- G1HeapRegionSize = (.0MB)
- Heap Usage:
- PS Young Generation
- Eden Space:
- capacity = (.5MB)
- used = (.47528839111328MB)
- free = (.02471160888672MB)
- 28.009019699771848% used
- From Space:
- capacity = (.5MB)
- used = (.15625MB)
- free = (.34375MB)
- 31.25% used
- To Space:
- capacity = (.5MB)
- used = (.0MB)
- free = (.5MB)
- 0.0% used
- PS Old Generation
- capacity = (.5MB)
- used = (.9308624267578MB)
- free = (.5691375732422MB)
- 55.32382501515602% used
- interned Strings occupying bytes.
5、jinfo
查看JVM的配置信息,输出信息略多,就不贴出来了,可自行测试查看
6、jstat
可以监控JVM的类的加载及卸载情况,查看新生代、老生代及持久代的容量及使用情况,查看新生代、老生代及持久代的垃圾收集情况,包括垃圾回收的次数及垃圾回收所占用的时间,查看新生代中Eden区及Survior区中容量及分配情况等。,是一个比较实用的命令工具。
语法:jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]
具体参数如下:
- class:统计class loader行为信息
- compile:统计编译行为信息
- gc:统计jdk gc时heap信息
- gccapacity:统计查看新生代、老生代及持久代的存储容量情况
- gccause:统计gc的情况,(同-gcutil)和引起gc的事件
- gcnew:统计gc时,新生代的情况
- gcnewcapacity:统计gc时,新生代heap容量
- gcold:统计gc时,老年区的情况
- gcoldcapacity:统计gc时,老年区heap容量
- gcpermcapacity:统计gc时,permanent区heap容量
- gcutil:统计gc时,heap情况
- printcompilation:HotSpot编译方法的统计。
vmid - VM的进程号,即当前运行的java进程号。
interval–间隔时间,单位可以是秒或者毫秒,通过指定s或ms确定,默认单位为毫秒。
count-打印次数,如果缺省则打印无数次。
- #每隔1秒监控一次,共监控3次
- # jstat -class
- Loaded Bytes Unloaded Bytes Time
- 45074.3 1388.7 17.01
- 45074.3 1388.7 17.01
- 45074.3 1388.7 17.01
说明:
- Loaded 加载了的类的数量
- Bytes 加载了的类的大小,单为Kb
- Unloaded 卸载了的类的数量
- Bytes 卸载了的类的大小,单为Kb
- Time 花在类的加载及卸载的时间
- # jstat -gc
- S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
- 512.0 512.0 0.0 128.0 173568.0 48608.9 349696.0 214569.2 135808.0 129898.4 17024.0 16017.7 26476.281 135.352 26611.633
- 512.0 512.0 0.0 128.0 173568.0 48621.6 349696.0 214569.2 135808.0 129898.4 17024.0 16017.7 26476.281 135.352 26611.633
- 512.0 512.0 0.0 128.0 173568.0 48634.8 349696.0 214569.2 135808.0 129898.4 17024.0 16017.7 26476.281 135.352 26611.633
说明
- S0C 新生代中Survivor space中S0当前容量的大小(KB)
- S1C 新生代中Survivor space中S1当前容量的大小(KB)
- S0U 新生代中Survivor space中S0容量使用的大小(KB)
- S1U 新生代中Survivor space中S1容量使用的大小(KB)
- EC Eden space当前容量的大小(KB)
- EU Eden space容量使用的大小(KB)
- OC Old space当前容量的大小(KB)
- OU Old space使用容量的大小(KB)
- PC Permanent space当前容量的大小(KB)
- PU Permanent space使用容量的大小(KB)
- YGC 从应用程序启动到采样时发生 Young GC 的次数
- YGCT 从应用程序启动到采样时 Young GC 所用的时间(秒)
- FGC 从应用程序启动到采样时发生 Full GC 的次数
- FGCT 从应用程序启动到采样时 Full GC 所用的时间(秒)
- GCT T从应用程序启动到采样时用于垃圾回收的总时间(单位秒),它的值等于YGC+FGC
- # jstat -gccapacity
- NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC
- 174592.0 174592.0 174592.0 512.0 512.0 173568.0 349696.0 349696.0 349696.0 349696.0 0.0 1167360.0 135808.0 0.0 1048576.0 17024.0
- 174592.0 174592.0 174592.0 512.0 512.0 173568.0 349696.0 349696.0 349696.0 349696.0 0.0 1167360.0 135808.0 0.0 1048576.0 17024.0
- 174592.0 174592.0 174592.0 512.0 512.0 173568.0 349696.0 349696.0 349696.0 349696.0 0.0 1167360.0 135808.0 0.0 1048576.0 17024.0
说明:
- NGCMN 新生代的最小容量大小(KB)
- NGCMX 新生代的最大容量大小(KB)
- NGC 当前新生代的容量大小(KB)
- S0C 当前新生代中survivor space 0的容量大小(KB)
- S1C 当前新生代中survivor space 1的容量大小(KB)
- EC Eden space当前容量的大小(KB)
- OGCMN 老生代的最小容量大小(KB)
- OGCMX 老生代的最大容量大小(KB)
- OGC 当前老生代的容量大小(KB)
- OC 当前老生代的空间容量大小(KB)
- PGCMN 持久代的最小容量大小(KB)
- PGCMX 持久代的最大容量大小(KB)
- PGC 当前持久代的容量大小(KB)
- PC 当前持久代的空间容量大小(KB)
- YGC 从应用程序启动到采样时发生 Young GC 的次数
- FGC 从应用程序启动到采样时发生 Full GC 的次数
7、jstack
查看线程的堆栈信息,可用于分析程序崩溃生成的core文件来定位发生问题的原因
- # jstack -l
输出信息过多就不贴出来了
JDK 自带的性能监控工具的更多相关文章
- 011 - JDK自带的性能监控工具
一.概要: jps -l 查看现有的java进程 jps -l 显示所有正在运行的java进程id jstack 查看Java线程 jstack -l pid; 做thread du ...
- 利用jdk自带的运行监控工具JConsole观察分析Java程序的运行
利用jdk自带的运行监控工具JConsole观察分析Java程序的运行 原文链接 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...
- 一些JDK自带的性能分析利器
有时候碰到服务器CPU飙升或者程序卡死之类的问题,一般都不太好定位.这类bug一般都隐藏的比较深并且还可能是偶发性的,比较棘手. 对于此类问题,一般我们都有固定的分析流程.借助于JDK自带的一些分析工 ...
- JDK自带JVM性能调优监控工具jps、jstack、jmap、jhat、jstat
原文地址:https://www.jianshu.com/p/db954cb968fb JVM性能调优监控工具jps.jstack.jmap.jhat.jstat位于JDK的bin目录,这些工具短小精 ...
- JDK自带的运行监控工具JConsole观察分析Java程序的运行
原文地址:https://blog.csdn.net/libaolin198706231987/article/details/55057149 一.JConsole是什么 从Java 5开始 引入了 ...
- JVM内核-原理、诊断与优化学习笔记(七):性能监控工具
文章目录 系统性能监控 系统性能监控- linux uptime top vmstat(虚拟内存统计) pidstat 系统性能监控 - windows 任务管理器 Perfmon Process E ...
- java虚拟机(十)--性能监控工具测试内存溢出和死锁基本思路
在之前就曾经简单介绍过jdk自带的性能检测工具,但是只是很入门的内容.没有真正的用过都是白扯了,面试的时候也说不过去,更别提真正 在生产环境去解决问题,所以这里我们学习一下真正解决问题的过程,最起码面 ...
- 使用JDK自带的visualvm进行性能监测和调优
使用JDK自带的visualvm进行性能监测和调优 1.关于VisualVm工具 VisualVM 提供在 Java 虚拟机 (Java Virutal Machine, JVM) 上运行的 J ...
- jvm性能监控(3)-jdk自带工具 jps jstack jmap
一.概要: jps -l 查看现有的java进程 jps -l 显示所有正在运行的java进程id jstack 查看Java线程 jstack -l pid; 做thread dump ...
随机推荐
- python爬取豆瓣首页热门栏目详细流程
记录一下爬取豆瓣热门专栏的经过,通过这篇文章,你能学会requests,HTMLParser,json的基本使用,以及爬取网页内容的基本思路. 使用模块 1,获取豆瓣首页代码:首先我们需要访问豆瓣页面 ...
- Leetcode之回溯法专题-37. 解数独(Sudoku Solver)
Leetcode之回溯法专题-37. 解数独(Sudoku Solver) 编写一个程序,通过已填充的空格来解决数独问题. 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次.数字 1 ...
- javascript之操作数组方法
掌握如何操作数组,会让你的开发变得更加高效 1.栈和队列方法(以下四个方法都改变原数组) arr.push() //接受任意类型的参数,逐个添加到数组的末尾,并返回数组的长度 改变原数组 arr.po ...
- HDU 4479 Shortest path 带限制最短路
题意:给定一个图,求从1到N的递增边权的最短路. 解法:类似于bellman-ford思想,将所有的边先按照权值排一个序,然后依次将边加入进去更新,每条边只更新一次,为了保证得到的路径是边权递增的,每 ...
- CF991D Bishwock 第十七 贪心
Bishwock time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...
- unicode编码原理及问题
历史在1963年,计算机的使用尚不广泛,那时使用的是7-bit的ASCII码,范围为0-127作为字符的编码,只支持少部分的字符,但是随着计算机的普及,不同的国家地区开始自己制造自己的编码规范,这导致 ...
- HDU 1010 temp of the bone 解题报告 (DFS)
转载大佬的blog,很详细,学到了很多东西 奇偶剪枝:根据题目,dog必须在第t秒到达门口.也就是需要走t-1步.设dog开始的位置为(sx,sy),目标位置为(ex,ey).如果abs(ex-x)+ ...
- github初学者搭建自己的网站
如何利用github打造博客专属域名 感谢园友的无私共享-- http://www.cnblogs.com/xuehaoyue/p/6551217.html 选分支 建立好库,在设置 这里选择博客类型 ...
- .NET 分布式自增Id组件(解决自动分配机器Id、时间回拨问题)
目录 简介 产生背景 使用方式 原始版 完美版 测试 结尾 简介 IdHelper是一个.NET(支持.NET45+或.NET Standard2+)生成分布式趋势自增Id组件,有两个版本:原始版为基 ...
- 5分钟理解 SpringBoot 响应式的核心-Reactor
目录 一.前言 二. Mono 与 Flux 构造器 三. 流计算 1. 缓冲 2. 过滤/提取 3. 转换 4. 合并 5. 合流 6. 累积 四.异常处理 五.线程调度 小结 参考阅读 一.前言 ...