一、前言
本小节会介绍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目录找到以下图标,双击打
然后你会看到
点击左侧是用到jvm的程序intellij platform–就是用这的idea java编辑器:
总共有四个标签,重点介绍以下“监视”以及“线程”
监视里面的线程一栏看看,活动是指目前活动活跃的线程数量,已经启动的总数是指,程序运行以来一共创建或启动的线程数量,无论线程状态是不是完成了,或者已经被销毁了,还是说正在活动中,抑或在阻塞,全部都统计在这个数字中
线程标签页如下:
线程标签页可以选择所有线程列表,活动的线程或者是已经完成的线程,这些信息也对于判断程序的性能很重要