前面我们学习了很多JVM相关的理论知识,那么本节将重点讲述的是工具的使用,正所谓:工欲善其事,必先利其器。因此,本节介绍常用的性能监控工具,用于性能监控和问题排查。

一、系统性能监控

系统性能工具用于确定系统运行的整体状态,基本定位问题所在。

Linux

– uptime

• 系统时间

• 运行时间

n 例子中为7分钟

• 连接数

n 每一个终端算一个连接

• 1,5,15分钟内的系统平均负载

n 运行队列中的平均进程数

– Top

• 第一行同uptime

• 第三行到第五行是CPU和内存的使用情况

• 图中下面的列表是每个进程使用CPU的情况

• 可以知道哪个程序占CPU最多

– vmstat

• 可以统计系统的CPU,内存,swap,io等情况

• 例子中的参数1为采样频率,4为采样次数

• 本例子说明CPU占用率很高,上下文切换频繁,说明系统有线程正在频繁切换

– pidstat

• 细致观察进程

• 需要安装

n sudo apt-get install sysstat

• 监控CPU

• 监控IO

• 监控内存

Windows

– 任务管理器

– Perfmon

Windows自带多功能性能监控工具

– pslist

n 命令行工具

n 可用于自动化数据收集

n 显示java程序的运行情况

二、JAVA自带工具

   

jps
–列出java进程,类似于ps命令
–参数-q可以指定jps只输出进程ID ,不输出类的短名称
–参数-m可以用于输出传递给Java进程(主函数)的参数
–参数-l可以用于输出主函数的完整路径
–参数-v可以显示传递给JVM的参数
 

   

jinfo
–可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时,修改部分参数
–-flag <name>:打印指定JVM的参数值
–-flag [+|-]<name>:设置指定JVM参数的布尔值
–-flag <name>=<value>:设置指定JVM参数的值
 

jmap
–生成Java应用程序的堆快照和对象的统计信息
–jmap -histo 2972 >c:\s.txt

Dump堆
jmap -dump:format=b,file=c:\heap.hprof 2972

jstack
–打印线程dump
–-l 打印锁信息
–-m 打印java和native的帧信息
–-F 强制dump,当jstack没有响应时使用

jstack 120 >>C:\a.txt
JConsole
–图形化监控工具
–可以查看Java应用程序的运行概况,监控堆信息、永久区使用情况、类加载情况等
 

Visual VM
–Visual VM是一个功能强大的多合一故障诊断和性能监控的可视化工具

性能监控:找到占用CPU时间最长的方法

三、实战分析

运行一程序ThreadBlockMain,期望输出Hello,World ,结果在程序运行后,程序卡死,没有预期输出。
 

Java程序HoldCPUMain运行后,发现占用CPU很高,希望能找到原因。

死锁

如何从jstack的输出中找出死锁
 

输出最后的总结
 

参考文献:

葛一鸣《深入JVM内核》视频学习

最新文章

  1. NGUI 学习笔记
  2. jQuery插件开发(转)
  3. python的string用法
  4. TL(简单)
  5. AE二次开发技巧之撤销、重做
  6. 关于讯飞 使用android SDK出现21001错误码的分析
  7. Qt 自动搜索串口号列表
  8. Android Studio编译好的apk放在哪里?
  9. 关于C++中覆盖,重载,隐藏的一点说明
  10. RHEL6.4 postfix+dovecot搭建邮件服务器
  11. webstorm 编辑器破解 (麻麻再也不用担心过期了)
  12. Jersey实现Restful服务
  13. Spring任务调度定时器
  14. 解决配置Windows Update失败问题
  15. mysql排序之ORDER BY IF、ORDER BY配合IN、TIMESTAMPDIFF、TIMESTAMPADD、FIELD
  16. 利用Access-Control-Allow-Origin响应头解决跨域请求原理
  17. Linux 正则表达式_010
  18. 关于ping地址的几个意义
  19. Ubuntu 16.04.4 LTS + Ambari 2.6.1.5 + HDP 2.6.4.0 安装部署
  20. 虚拟机安装的ubutun全屏

热门文章

  1. Notepad++如何多视图(分屏)显示
  2. mui.ajax与服务器(SpringMVC)传输json数据
  3. PAT 甲级 1040 Longest Symmetric String
  4. linux mysql表名大小写
  5. Apache Hadoop YARN – ResourceManager--转载
  6. 常用yum源
  7. bzoj1912【Apio2010】patrol 巡逻
  8. 前端基础----JavaScript基础
  9. NYOJ--69
  10. 洛谷P1937 [USACO10MAR]仓配置Barn Allocation