jps命令
jps是JDK提供的用于查看当前Java虚拟机运行了哪些Java进程。
top命令
top命令使我们最常用的Linux命令之一,它可以实时的显示当前正在执行的进程的CPU使用率,内存使用率等系统信息。top -Hp pid可以查看与进程相关的线程的系统资源使用情况:
vmstat命令
vmstat是一个指定周期和采集次数的虚拟内存检测工具,可以统计内存,CPU,swap的使用情况,它还
有一个重要的常用功能,用来观察进程的上下文切换。
字段说明如下:
| 字段 | 说明 |
|---|---|
| r | 运行队列中进程数量(当数量大于CPU核数表示有阻塞的线程) |
| b | 等待IO的进程数量 |
| swpd | 使用虚拟内存大小 |
| free | 空闲物理内存大小 |
| buff | 用作缓冲的内存大小(内存和硬盘的缓冲区) |
| cache | 用作缓存的内存大小(CPU和内存之间的缓冲区) |
| si | 每秒从交换区写到内存的大小,由磁盘调入内存 |
| so | 每秒写入交换区的内存大小,由内存调入磁盘 |
| bi | 每秒读取的块数 |
| bo | 每秒写入的块数 |
| in | 每秒中断数,包括时钟中断。 |
| cs | 每秒上下文切换数。 |
| us | 用户进程执行时间百分比(user time) |
| sy | 内核系统进程执行时间百分比(system time) |
| wa | IO等待时间百分比 |
| id | 空闲时间百分比 |
jstack命令
jstack是JDK工具命令,它是一种线程堆栈分析工具,最常用的功能就是使用 jstack pid 命令查看线程的堆栈信息,也经常用来排除死锁情况。
jstat 命令
检测Java程序运行的实时情况,包括堆内存信息和垃圾回收信息,我们常常用来查看程序垃圾回收情况。常用的命令是jstat -gc pid:
信息字段说明如下:
| 字段 | 说明 |
|---|---|
| S0C | 年轻代中 To Survivor 的容量(单位 KB) |
| S1C | 年轻代中 From Survivor 的容量(单位 KB) |
| S0U | 年轻代中 To Survivor 目前已使用空间(单位 KB) |
| S1U | 年轻代中 From Survivor 目前已使用空间(单位 KB) |
| EC | 年轻代中 Eden 的容量(单位 KB) |
| EU | 年轻代中 Eden 目前已使用空间(单位 KB) |
| OC | 老年代的容量(单位 KB) |
| OU | 老年代目前已使用空间(单位 KB) |
| MC | 元空间的容量(单位 KB) |
| MU | 元空间目前已使用空间(单位 KB) |
| YGC | 从应用程序启动到采样时年轻代中 gc 次数 |
| YGCT | 从应用程序启动到采样时年轻代中 gc 所用时间 (s) |
| FGC | 从应用程序启动到采样时 老年代(Full Gc)gc 次数 |
| FGCT | 从应用程序启动到采样时 老年代代(Full Gc)gc 所用时间 (s) |
| GCT | 从应用程序启动到采样时 gc 用的总时间 (s) |
jmap命令
jmap也是JDK工具命令,他可以查看堆内存的初始化信息以及堆内存的使用情况,还可以生成dump文件来进行详细分析。查看堆内存情况命令jmap -heap pid:
mat内存工具
MAT(Memory Analyzer Tool)工具是eclipse的一个插件(MAT也可以单独使用),它分析大内存的dump文件时,可以非常直观的看到各个对象在堆空间中所占用的内存大小、类实例数量、对象引用关系、利用OQL对象查询,以及可以很方便的找出对象GC Roots的相关信息。
idea中也有这么一个插件,就是JProfiler。