Java性能调优:JVM性能监控常用方法

一、前言本小节会介绍JVM性能监控,掌握几种常用的监控工具辅助我们更好的了解JVM的性能状态 。生产环境中监控JVM性能,分析监控数据,可以知道何时需要JVM调优,可见监控是非常重要的 。
JVM的监控范围包括垃圾收集、JIT编译以及类加载 。那其中具体都包含哪些?如何监控呢?我们开始探索下吧
二、垃圾收集监控JVM的垃圾收集非常的重要,因为它对应用的吞吐量和延迟有着深刻的影响 。
重要的垃圾收集数据包括:

当前使用的垃圾收集器
JAVA堆的大小
新生代和老年代的大小
永久代的大小
Minor GC的持续时间
Minor GC的频率
Minor GC的空间回收量
Full GC的持续时间
Full GC的频率
每个并发垃圾收集周期的空间回收量
是否老年代或者永久代的占用触发了Full GC
应用是否显式调用了System.gc()

三、图形/命令工具除了用命令行选项生成垃圾收集统计数据,我们还可以用图形化工具监控垃圾收集,用这类工具识别变化趋势或者模式要比文本容易很多 。下列图形化工具可用于监控HotSpot VM:JConsole、JProfile(收费)、VisualGC(插件)以及VisualVM
3.1 VisualVM介绍
在进行多线程编程以及线程池编程时候,是无法用肉眼确认程序性能的,也不会知道当前jvm上面有多少个线程,线程池用的对不对 。这时候就要用 visual vm 这些jdk自带的性能监测工具了 。
简单介绍:
请打开你的jdk的bin目录找到以下图标,双击打
Java性能调优:JVM性能监控常用方法

文章插图
 
然后你会看到
Java性能调优:JVM性能监控常用方法

文章插图
 
点击左侧是用到jvm的程序intellij platform–就是用这的idea java编辑器:
Java性能调优:JVM性能监控常用方法

文章插图
 
总共有四个标签,重点介绍以下“监视”以及“线程”
Java性能调优:JVM性能监控常用方法

文章插图
 
监视里面的线程一栏看看,活动是指目前活动活跃的线程数量,已经启动的总数是指,程序运行以来一共创建或启动的线程数量,无论线程状态是不是完成了,或者已经被销毁了,还是说正在活动中,抑或在阻塞,全部都统计在这个数字中
线程标签页如下:
Java性能调优:JVM性能监控常用方法

文章插图
 
线程标签页可以选择所有线程列表,活动的线程或者是已经完成的线程,这些信息也对于判断程序的性能很重要
Java性能调优:JVM性能监控常用方法

文章插图
专栏
Java性能优化-技术讲解
作者:架构师速成记
8.8币
42人已购
查看3.2 JConsole介绍
JConsole主要用来分析内存,cpu,线程,类等
在JDK安装目录找到jconsole.exe
Java性能调优:JVM性能监控常用方法

文章插图
 

Java性能调优:JVM性能监控常用方法

文章插图
 
概览:在连接上Java应用程序后,遍可以查看应用程序概况,如下图所示 。图中4张折线分别显示了堆内存的使用情况、系统线程数量、加载类的数量以及CPU的使用率 。
Java性能调优:JVM性能监控常用方法

文章插图
 
内存监控:切换到内存监控页面,JConsole可以显示当前内存的详细细心 。这不仅包括堆内存的整体信息,更细化到eden区,survivior区、老年代的使用情况 。同时,也包括非堆区,即永久代的使用情况 。单机界面右上角“执行GC”按钮,可以强制应用程序进行一次Full GC 。
Java性能调优:JVM性能监控常用方法

文章插图
 
线程监控:JConsole中的线程选项卡允许开发人员监控程序内的线程,如下图所示 。JConsole显示了系统内的线程数量以及程序中所有的线程 。单机线程名称,便可以查看线程的栈信息 。
使用“检测到死锁”按钮,还可以自动检测多线程应用程序的死锁情况(可快速定位死锁问题)
Java性能调优:JVM性能监控常用方法

文章插图
 
类加载情况:JConsole的类页面显示了系统已经装载的类数量 。在详细信息栏中,还显示了已经卸载的类数量 。


推荐阅读