主要是对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_OPTS jvm监控 java自带的jvm监控_数据库

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

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