主要是对Java虚拟机(JVM)的远程监视,如jdk自带的工具jvisualvm就可监视内存(JVM)、垃圾收集(GC)和线程统计,针对不同的JVM厂商,如Sun JVM、IBM JVM和Oracle JRockit JVM,监控的指标有所区别,但大体都一样。以下罗列了常见的JVM监控指标:


监控参数描述
进程内存
Eden空间 (堆内存)最初为大多数对象分配内存的池
幸存空间 (堆内存)在eden空间的垃圾收集之后池中幸存的对象
Tenured Generation (堆内存)在幸存空间中存在了一段时间的池中包含的对象
Java堆JVM存储对象的空间
Permanent Generation (非堆内存)保存虚拟机本身的所有反射数据,如类和方法对象。利用使用类数据共享的虚拟机,此内存可分为只读和读写区域。
代码缓存 (非堆内存)用于编译和存储本机代码的内存。
JIT代码缓存存储转换的汇编语言并可使其高速执行的内存
Nursery分配给新的对象的空间
线程参数
全部开始线程java虚拟机运行开始后的全部线程的数量
最大线程java虚拟机运行开始后最大的活动线程数量或该值被重置
活动线程当前运行的活动线程数
守护线程当前运行的后台程序线程数
可运行线程在Java虚拟机中执行的线程
被阻塞线程被阻止并等待监视器锁的线程
等待中的线程无限期等待另一线程执行特定动作的线程
限时等待的线程该线程等待其他线程执行动作,并且等待了表示的时间
死锁线程线程处于死锁状态的数量
类加载
载入的类加载的类数
卸载的类卸载的类数
JVM统计
CPU负荷表示由JVM占用的机器的负荷
0表示无负荷,100表示满负荷
CPU使用表示服务器上JVM使用CPU的信息
主机内存参数
全部物理内存物理内存MB
空闲物理内存空闲物理内存MB
全部交换区域交换区域空间大小MB
虚拟内存用来运行进程的虚拟内存的大小MB
垃圾清理(GC)
花费时间/Min收集信息花费的大约时间(毫秒)
收集时间/Min收集运行的大约时间ms
线程数用于垃圾清理的线程数
上次开始时间本次垃圾清理的开始时间
上次结束时间本次垃圾清理的结束时间
清理前内存本次垃圾清理前的内存使用情况
清理后内存本次垃圾清理后的内存使用情况
垃圾收集执行垃圾收集使用的时间
编译时间编译(JIT)使用的时间



以下列出了一些需要监控的服务对象如何开启JVM监控配置(只要按以下方式配置并重启服务后,就可以通过jvisualvm等工具进行远程监视)

Java虚拟机监控指标及监控配置_性能测试

说明:监控要求防火墙关闭或是放开指定端口,对于-Djava.rmi.server.hostname=172.16.1.152不是必须设置,但如果服务器在/etc/hosts

没有配置好hostname的IP有可能就无法远程连接JMX,这时候就需要配置-Djava.rmi.server.hostname