端口、进程以及kill进程

netstat

netstat 命令用于显示网络连接、路由表和网络接口等网络相关信息。它提供了对网络连接状态、端口使用情况和网络接口统计的监视和诊断能力。

语法:

netstat [选项]

常用参数:

  • -t:仅显示 TCP 协议相关的网络连接。
  • -u:仅显示 UDP 协议相关的网络连接。
  • -n:以数字形式显示 IP 地址和端口号,而不进行反向解析。
  • -p:显示与连接相关的进程信息。
  • -r:显示路由表信息。
  • -i:显示网络接口信息。

常用快捷方式:

  • netstat -tuln:显示所有 TCP 和 UDP 监听端口。
  • netstat -tuln | grep <端口号>:查找特定端口是否正在监听。
  • netstat -r:显示路由表信息。
  • netstat -i:显示网络接口信息。

ps

ps 命令用于查看当前运行进程的状态信息。它可以显示正在运行的进程列表,并提供有关每个进程的详细信息,例如进程ID、运行时间、CPU利用率等。

语法:

ps [选项]

常用参数:

  • -a:显示所有进程,而不仅仅是当前用户的进程。
  • -e:显示所有进程,而不仅仅是当前用户的进程。
  • -f:显示完整的进程信息,包括父进程ID、终端、CPU利用率等。
  • -l:使用长格式显示进程信息。
  • -u:显示指定用户的进程信息。
  • -p:仅显示指定进程ID的信息。
  • -x:不区分终端机。

常用快捷方式:

  • ps -aux:以完整格式显示所有进程的信息。
  • ps -ef:以完整格式显示所有进程的信息。
  • ps -l:使用长格式显示当前用户的进程信息。
  • ps -u <用户名>:显示指定用户的进程信息。
  • ps -p <进程ID>:仅显示指定进程ID的信息。
  • ps -<参数> | grep <端口>:配合管道命令,筛选与指定进程名匹配的进程信息。

kill

kill 命令用于向进程发送信号,从而请求其终止或执行其他操作。它可以与进程的进程ID(PID)配合使用,用于管理和控制正在运行的进程。

语法:

kill [选项] <进程ID>

常用参数:

  • -l:列出所有可用的信号名称。
  • -s <信号名称>:向进程发送指定的信号。
  • -<信号编号>:向进程发送指定编号的信号。
  • -a:向所有具有指定权限的进程发送信号。

常用快捷方式:

  • kill <进程ID>:向指定进程发送默认的终止信号(SIGTERM)。
  • kill -9 <进程ID>:向指定进程发送强制终止信号(SIGKILL)。
    • kill 命令用于终止进程,-9 表示强迫进程立即停止

系统性能监控命令

cpu性能

top

top 命令是 Linux 系统中常用的实时系统监控命令,用于显示系统中正在运行的进程以及系统资源的使用情况。它以交互式的方式提供了对系统性能的实时监控和统计信息。

语法:

top [选项]

常用参数:

  • -d 秒数:指定刷新间隔时间,单位为秒。
  • -p 进程ID列表:仅显示指定进程ID的信息。
  • -u 用户名:仅显示指定用户名的进程信息。

常用快捷方式:

  • q:退出 top 命令。
  • k:向指定的进程发送信号,以终止该进程。
  • r:修改进程的优先级。
  • 1:切换到全局 CPU 使用情况显示。
  • l:切换显示平均负载和运行队列的信息。
  • t:切换显示进程和系统 CPU 时间信息。
  • m:切换显示进程和系统内存使用情况。

htop

htop是一个交互式的进程监视器,提供了更友好和功能丰富的界面,用于查看系统的进程、资源使用情况和系统负载等。以下是htop命令的常用语法、选项和常用快捷方式:

语法:

htop [选项]

常用选项:

  • -d <秒数>:设置刷新间隔时间。
  • -u <用户名>:仅显示指定用户的进程。
  • -p <进程ID>:仅显示指定进程ID的信息。
  • -s <列名>:按指定的列名进行排序。
  • -k:以Kibibytes为单位显示内存使用量。
  • -h:显示帮助信息,列出可用选项。

常用快捷方式:

  • F1:显示帮助信息。
  • F2:设置htop的参数,如刷新间隔、排序方式等。
  • F3:搜索进程。
  • F4:筛选显示的进程。
  • F5:切换显示模式,如树形视图、紧凑视图等。
  • F6:按指定的列名进行排序。
  • F9:发送信号给选定的进程。
  • F10:退出htop

uptime

uptime 命令用于显示系统的运行时间和平均负载。它可以告诉你系统自上次启动以来的运行时间、当前活动用户数、系统负载平均值等信息。

语法:

uptime [选项]

uptime 命令不需要额外的参数,直接执行即可。它会显示系统的运行时间、当前活动用户数、系统平均负载等信息。

以下是 uptime 命令的输出示例:

11:35:28 up 15 days, 22:17,  2 users,  load average: 0.08, 0.04, 0.01

输出中的各项信息解释如下:

  • 11:35:28:当前时间。
  • up 15 days, 22:17:系统自上次启动以来的运行时间,格式为"days, hours:minutes"。
  • 2 users:当前活动用户数。
  • load average: 0.08, 0.04, 0.01:系统平均负载,分别对应过去 1 分钟、5 分钟和 15 分钟的平均负载。

uptime 命令对于快速查看系统的运行时间和负载情况非常有用。它可以帮助你了解系统的稳定性和负载情况,以及判断系统是否正常运行。

dstat

dstat 是一个用于系统性能监控的命令行工具,在 Linux 中被广泛使用。它可以实时显示各种系统资源的使用情况,包括 CPU、内存、磁盘、网络等。

语法:

dstat [选项] [时间间隔] [计数]

常用参数:

  • -c:显示 CPU 使用情况。
  • -d:显示磁盘使用情况。
  • -m:显示内存使用情况。
  • -n:显示网络使用情况。
  • -s:显示系统调用使用情况。
  • -y:显示文件系统使用情况。
  • -p:显示进程相关的统计信息。
  • -g:显示页面访问情况。

常用快捷方式:

  • Ctrl + C:终止 dstat 命令的执行。

dstat 命令允许你以一定的时间间隔实时监测系统资源的使用情况。你可以使用不同的参数来指定你感兴趣的资源,并可以选择指定时间间隔和计数。执行 dstat 命令后,它会在终端上以表格形式输出监测数据。

以下是一些示例用法:

  1. 监测 CPU 使用情况:
dstat -c
  1. 监测磁盘使用情况:
dstat -d
  1. 监测内存使用情况:
dstat -m
  1. 监测网络使用情况:
dstat -n
  1. 查看cpu,内存,io读写,最高的进程:
dstat --top-cpu --top-mem --top-io  :查看cpu,内存,io读写,最高的进程

sar

sar(System Activity Reporter)是一个系统性能监控工具,用于收集和报告系统的各种性能统计信息,如CPU利用率、内存使用、磁盘I/O等。以下是sar命令的常用语法、选项和常用快捷方式:

语法:

sar [选项] [间隔时间] [次数]

常用选项:

  • -u:显示CPU使用情况的统计信息。
  • -r:显示内存使用情况的统计信息。
  • -b:显示磁盘I/O使用情况的统计信息。
  • -n <网络设备>:显示网络使用情况的统计信息。
  • -q:显示系统负载情况的统计信息。
  • -A:显示所有可用的统计信息。
  • -f <文件>:指定从指定文件读取数据。

常用快捷方式:

  • sar:默认情况下,运行sar命令将显示CPU利用率的统计信息。
  • sar -u:显示CPU使用情况的统计信息。
  • sar -r:显示内存使用情况的统计信息。
  • sar -b:显示磁盘I/O使用情况的统计信息。
  • sar -n <网络设备>:显示指定网络设备的使用情况的统计信息。
  • sar -q:显示系统负载情况的统计信息。
  • sar -A:显示所有可用的统计信息。

内存

free

free 命令不需要额外的参数,直接执行即可。它会显示系统内存的使用情况,包括总内存量、已使用的内存量、可用的内存量、缓存和缓冲区的占用情况等。

以下是 free 命令的输出示例:

              total        used        free      shared  buff/cache   available
Mem:        2048548     1174528      692324       61944      179696      765128
Swap:       2097148           0     2097148

输出中的各列含义解释如下:

  • total:物理内存总量。
  • used:已使用的物理内存量。
  • free:可用的物理内存量。
  • shared:被共享的物理内存量。
  • buff/cache:被缓存和缓冲的物理内存量。
  • available:可用的物理内存量,用于新进程分配。

常用选项:

  • -b--bytes:以字节为单位显示内存使用情况。
  • -k--kilo:以千字节为单位显示内存使用情况(默认选项)。
  • -m--mega:以兆字节为单位显示内存使用情况。
  • -g--giga:以吉字节为单位显示内存使用情况。
  • -t--total:在输出中包括总内存使用情况的行。
  • -s N--seconds N:持续打印内存使用情况,每隔N秒刷新一次。

vmstat

vmstat命令用于报告虚拟内存统计信息,包括系统的进程、内存、磁盘、交换和CPU使用情况。以下是vmstat命令的常用语法、选项和快捷方式:

语法:

vmstat [选项] [延迟时间] [次数]

常用选项:

  • -a:显示活动和非活动内存的详细信息。
  • -d:显示磁盘统计信息。
  • -s:显示内存和交换区的摘要统计信息。
  • -w:以宽格式显示输出。
  • -t:显示时间和日期。
  • -p <设备>:指定要监视的块设备。
  • -S <单位>:指定以何种单位显示输出,如k(KB)、m(MB)、g(GB)等。

常用快捷方式:

  • vmstat:默认情况下,运行vmstat命令将显示系统的进程、内存、磁盘、交换和CPU统计信息。
  • vmstat -s:显示内存和交换区的摘要统计信息,包括空闲内存、缓存、交换分区等。
  • vmstat -d:显示磁盘统计信息,包括每个块设备的读取和写入速率、I/O等待时间等。
  • vmstat -w:以宽格式显示输出,提供更详细的列信息。
  • vmstat 1:每秒更新一次统计信息,并持续显示输出,可以实时监视系统状况。

磁盘

df

df 命令用于显示文件系统的磁盘空间使用情况,包括文件系统的总容量、已用空间、可用空间以及挂载点。它可以告诉你每个文件系统的磁盘空间占用情况,帮助你了解磁盘的使用情况。

语法:

df [选项] [文件或目录]

常用参数:

  • -a:显示所有文件系统,包括系统保留的文件系统。
  • -h:以人类可读的格式显示磁盘空间大小。
  • -T:显示文件系统类型。
  • -i:显示索引节点信息。
  • -k:以千字节为单位显示磁盘空间大小。
  • -m:以兆字节为单位显示磁盘空间大小。

df 命令不需要额外的参数,直接执行即可。它会显示系统中各个文件系统的磁盘空间使用情况。

fdisk

fdisk -l:查看磁盘分区信息

iostat

iostat 命令用于显示系统的磁盘和CPU活动情况,包括设备的平均响应时间、传输速度、CPU利用率等信息。它可以帮助你监视系统的磁盘和CPU性能,了解系统的负载情况。

语法:

iostat [选项] [间隔时间] [次数]

常用选项:

  • -c:显示CPU统计信息。
  • -d:显示磁盘统计信息。
  • -n:显示网络统计信息。
  • -t:显示时间和日期。
  • -x:显示扩展磁盘统计信息。
  • -h:以人类可读的格式显示输出。
  • -p <设备>:指定要监视的设备。

常用快捷方式:

  • iostat:默认情况下,运行iostat命令将显示CPU和设备的平均统计信息。
  • iostat -d:显示磁盘的统计信息,包括每个磁盘的读取和写入速率、I/O等待时间等。
  • iostat -c:显示CPU的统计信息,包括每个CPU的用户、系统和空闲时间。
  • iostat -x:显示扩展磁盘统计信息,包括每个磁盘的更详细的统计数据,如平均请求大小、等待时间等。
  • iostat -n:显示网络统计信息,包括每个网络接口的传输速率、传输错误等。

文件/目录

du

du 命令用于计算文件或目录的磁盘使用情况,即计算文件或目录的大小。它可以帮助你查看文件或目录所占用的磁盘空间,以便进行磁盘空间管理。

语法:

du [选项] [文件或目录]

常用参数:

  • -h:以人类可读的格式显示文件或目录的大小。
  • -s:只显示总大小,不显示子目录的大小。
  • -c:显示总大小,并包括所有文件或目录的大小总和。
  • -k:以千字节为单位显示文件或目录的大小。
  • -m:以兆字节为单位显示文件或目录的大小。

常用快捷方式:

  • du -sh:以人类可读的格式显示当前目录的总大小。
  • du -sh *:以人类可读的格式显示当前目录下每个子目录或文件的大小。
  • du -sh directory:以人类可读的格式显示指定目录的总大小。
  • du -sk:以千字节为单位显示当前目录的总大小。
  • glances

Java命令行工具

jps

jps命令用于列出Java虚拟机(JVM)中正在运行的Java进程的进程ID(PID)以及它们的主类名。以下是jps命令的常用语法、选项和快捷方式:

语法:

jps [选项]

常用选项:

  • -l:显示完整的主类名,包括包路径。
  • -m:显示传递给主类的参数。
  • -v:显示传递给主类的JVM参数。
  • -q:仅显示进程ID,不显示主类名。
  • -J<选项>:传递参数给jps工具本身。例如,-J-Xms512m表示设置jps工具的堆内存大小为512MB。

常用快捷方式:

  • jps:运行jps命令,将列出正在运行的Java进程的PID和主类名。
  • jps -l:显示完整的主类名,包括包路径。
  • jps -m:显示传递给主类的参数。
  • jps -v:显示传递给主类的JVM参数。
  • jps -q:仅显示进程ID,不显示主类名。

jstack

jstack命令用于生成Java进程的线程转储,提供有关线程状态、堆栈跟踪和锁信息的详细信息。以下是jstack命令的常用语法、选项和常用快捷方式:

语法:

jstack [选项] <PID>

常用选项:

  • -l:除了堆栈跟踪外,还显示关于锁的额外信息。
  • -F:在无法连接到目标进程时,强制生成线程转储。
  • -m:在生成线程转储时,显示Java和本地堆栈信息。
  • -h:显示帮助信息,列出可用选项。

常用快捷方式:

  • jstack <PID>:生成目标Java进程的线程转储。
  • jstack -l <PID>:生成目标Java进程的线程转储,并显示关于锁的额外信息。
  • jstack -F <PID>:在无法连接到目标进程时,强制生成目标Java进程的线程转储。
  • jstack -m <PID>:生成目标Java进程的线程转储,并显示Java和本地堆栈信息。

jmap

jmap命令用于生成Java进程的内存映像,并提供有关Java堆和内存使用情况的统计信息。

语法:

jmap [选项] <PID>

常用选项:

  • -dump:<格式>:生成堆转储文件,可以指定转储文件的格式,如-dump:live生成只包含活动对象的转储文件。
  • -heap:显示Java堆的详细信息,包括堆的配置和使用情况。
  • -histo[:live]:显示堆中各个类的实例数和内存占用情况。使用:live选项将仅显示活动对象。
  • -F:在无法连接到目标进程时,强制生成堆转储文件。
  • -h:显示帮助信息,列出可用选项。

常用快捷方式:

  • jmap -heap <PID>:显示目标Java进程的堆内存配置和使用情况。
  • jmap -histo[:live] <PID>:显示目标Java进程堆中各个类的实例数和内存占用情况。
  • jmap -dump:<格式> <PID>:生成目标Java进程的堆转储文件,可以指定转储文件的格式。

示例

jmap -heap pid 展示pid的整体堆信息
[root@localhost ~]# jmap -heap 27900
Attaching to process ID 27900, please wait...
Debugger attached successfully.
Client compiler detected.
JVM version is 20.45-b01
using thread-local object allocation.
Mark Sweep Compact GC
Heap Configuration: #堆内存初始化配置
    MinHeapFreeRatio = 40     #-XX:MinHeapFreeRatio设置JVM堆最小空闲比率  
    MaxHeapFreeRatio = 70   #-XX:MaxHeapFreeRatio设置JVM堆最大空闲比率  
    MaxHeapSize = 100663296 (96.0MB)   #-XX:MaxHeapSize=设置JVM堆的最大大小
    NewSize = 1048576 (1.0MB)     #-XX:NewSize=设置JVM堆的‘新生代’的默认大小
    MaxNewSize = 4294901760 (4095.9375MB) #-XX:MaxNewSize=设置JVM堆的‘新生代’的最大大小
    OldSize = 4194304 (4.0MB)  #-XX:OldSize=设置JVM堆的‘老生代’的大小
    NewRatio = 2    #-XX:NewRatio=:‘新生代’和‘老生代’的大小比率
    SurvivorRatio = 8  #-XX:SurvivorRatio=设置年轻代中Eden区与Survivor区的大小比值
    PermSize = 12582912 (12.0MB) #-XX:PermSize=<value>:设置JVM堆的‘持久代’的初始大小  
    MaxPermSize = 67108864 (64.0MB) #-XX:MaxPermSize=<value>:设置JVM堆的‘持久代’的最大大小  
Heap Usage:
New Generation (Eden + 1 Survivor Space): #新生代区内存分布,包含伊甸园区+1个Survivor区
    capacity = 30212096 (28.8125MB)
    used = 27103784 (25.848182678222656MB)
    free = 3108312 (2.9643173217773438MB)
    89.71169693092462% used
Eden Space: #Eden区内存分布
    capacity = 26869760 (25.625MB)
    used = 26869760 (25.625MB)
    free = 0 (0.0MB)
    100.0% used
From Space: #其中一个Survivor区的内存分布
    capacity = 3342336 (3.1875MB)
    used = 234024 (0.22318267822265625MB)
    free = 3108312 (2.9643173217773438MB)
    7.001809512867647% used
To Space: #另一个Survivor区的内存分布
    capacity = 3342336 (3.1875MB)
    used = 0 (0.0MB)
    free = 3342336 (3.1875MB)
    0.0% used
tenured generation:   #当前的Old区内存分布  
    capacity = 67108864 (64.0MB)
    used = 67108816 (63.99995422363281MB)
    free = 48 (4.57763671875E-5MB)
    99.99992847442627% used
Perm Generation:     #当前的 “持久代” 内存分布
    capacity = 14417920 (13.75MB)
    used = 14339216 (13.674942016601562MB)
    free = 78704 (0.0750579833984375MB)
    99.45412375710227% used

新生代的内存回收就是采用空间换时间的方式;
如果from区使用率一直是100% 说明程序创建大量的短生命周期的实例,使用jstat统计一下jvm在内存回收中发生的频率耗时以及是否有full gc,使用这个数据来评估一内存配置参数、gc参数是否合理;

多次ygc后如果s区没变化,这种情况不出意外就是担保了,可以jstat持续观察下;

[root@localhost ~]# jmap -heap 4951
Attaching to process ID 4951, please wait...
Debugger attached successfully.
Client compiler detected.
JVM version is 20.45-b01

using thread-local object allocation.
Parallel GC with 1 thread(s)

Heap Configuration:
    MinHeapFreeRatio = 40
    MaxHeapFreeRatio = 70
    MaxHeapSize      = 734003200 (700.0MB)
    NewSize          = 314572800 (300.0MB)
    MaxNewSize       = 314572800 (300.0MB)
    OldSize          = 4194304 (4.0MB)
    NewRatio         = 2
    SurvivorRatio    = 8
    PermSize         = 104857600 (100.0MB)
    MaxPermSize      = 104857600 (100.0MB)

Heap Usage:
PS Young Generation
Eden Space:
    capacity = 235929600 (225.0MB)
    used     = 169898184 (162.02753448486328MB)
    free     = 66031416 (62.97246551513672MB)
    72.01223754882812% used
From Space:
    capacity = 39321600 (37.5MB)
    used     = 0 (0.0MB)
    free     = 39321600 (37.5MB)
    0.0% used
To Space:
    capacity = 39321600 (37.5MB)
    used     = 0 (0.0MB)
    free     = 39321600 (37.5MB)
    0.0% used
PS Old Generation
    capacity = 419430400 (400.0MB)
    used     = 0 (0.0MB)
    free     = 419430400 (400.0MB)
    0.0% used
PS Perm Generation
    capacity = 104857600 (100.0MB)
    used     = 14140688 (13.485610961914062MB)
    free     = 90716912 (86.51438903808594MB)
    13.485610961914062% used

根据打印的结果:默认存活区与eden比率=2:8

  • 1)查看eden区:225M

  • 2)两个存活区大小:都为37.5M

  • 3)年轻代大小:300M

  • 4)老年代大小:400M

  • 5)持久代大小:100M

  • 6)最大堆内存大小:年轻代大小+老年代大小=700M

  • 7)java应用程序占用内存大小:最大堆内存大小+持久代大小=700M+100M=800M

对应java参数(在tomcat的启动文件里)配置如下:

JAVA_OPTS="-Xms700m -Xmx700m -Xmn300m -Xss1024K -XX:PermSize=100m -XX:MaxPermSize=100 -XX:+UseParallelGC -XX:ParallelGCThreads=1 -XX:+PrintGCTimeStamps
-XX:+PrintGCDetails -Xloggc:/opt/logs/gc.log -verbose:gc -XX:+DisableExplicitGC"

注意参数配置时,上述参数为一行。

map -histo pid 展示class的内存情况

说明:instances(实例数)、bytes(大小)、classs name(类名)。它基本是按照使用使用大小逆序排列的。

#instance 是对象的实例个数 
#bytes 是总占用的字节数 
class name 对应的就是 Class 文件里的 class 的标识 
B 代表 byte
C 代表 char
D 代表 double
F 代表 float
I 代表 int
J 代表 long
Z 代表 boolean
前边有 [ 代表数组, [I 就相当于 int[]
对象用 [L+ 类名表示

从打印结果可看出,类名中存在[C、[B等内容,

只知道它占用了那么大的内存,但不知道由什么对象创建的。下一步需要将其他dump出来,使用内存分析工具进一步明确它是由谁引用的、由什么对象。

jmap -histo:live pid>a.log

可以观察heap中所有对象的情况(heap中所有生存的对象的情况)。包括对象数量和所占空间大小。 可以将其保存到文本中去,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。

jmap -histo:live 这个命令执行,JVM会先触发gc,然后再统计信息。

dump 将内存使用的详细情况输出到文件

jmap -dump:live,format=b,file=a.log pid

说明:内存信息dump到a.log文件中。

这个命令执行,JVM会将整个heap的信息dump写入到一个文件,heap如果比较大的话,就会导致这个过程比较耗时,并且执行的过程中为了保证dump的信息是可靠的,所以会暂停应用。

该命令通常用来分析内存泄漏OOM,通常做法是:

用jhat命令可以参看 jhat -port 5000 heapDump 在浏览器中访问:http://localhost:5000/ 查看详细信息

jstat

jstat命令用于监视和显示Java虚拟机(JVM)的各种运行时统计信息,例如垃圾回收、类加载、编译等。

语法:

jstat [选项] <PID> [间隔时间(ms)] [显示次数]

常用选项:

  • -class:显示类加载和卸载的统计信息。
  • -compiler:显示JIT编译器的统计信息。
  • -gc:显示垃圾回收的统计信息。
  • -gccapacity:显示堆的容量统计信息。
  • -gcutil:显示垃圾回收的概要统计信息。
  • -printcompilation:显示JIT编译器的编译任务信息。
  • -h:显示帮助信息,列出可用选项。

常用快捷方式:

  • jstat -gc <PID>:显示目标Java进程的垃圾回收统计信息。
  • jstat -gcutil <PID>:显示目标Java进程的垃圾回收概要统计信息。
  • jstat -gcutil <PID> <间隔时间(ms)> <显示次数>:以指定的时间间隔和显示次数持续显示垃圾回收的概要统计信息。
  • jstat -class <PID>:显示目标Java进程的类加载和卸载的统计信息。

示例

  • 1、jstat -gc pid
可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。

  

  • 2、jstat -gccapacity pid
可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。
  • 3、jstat -gcutil pid
 统计gc信息统计。
  • 4、jstat -gcnew pid
年轻代对象的信息。
  • 5、jstat -gcnewcapacity pid
年轻代对象的信息及其占用量。
  • 6、jstat -gcold pid
 old代对象的信息。
  • 7、stat -gcoldcapacity pid
 old代对象的信息及其占用量。

8、jstat -gcpermcapacity pid

perm对象的信息及其占用量。

9、jstat -class pid

显示加载class的数量,及所占空间等信息。

  
10、jstat -compiler pid

显示VM实时编译的数量等信息。

11、jstat -printcompilation pid

当前VM执行的信息。
除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题。
结果说明:
S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
EC:年轻代中Eden(伊甸园)的容量 (字节)
EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
OC:Old代的容量 (字节)
OU:Old代目前已使用空间 (字节)
PC:Perm(持久代)的容量 (字节)
PU:Perm(持久代)目前已使用空间 (字节)
YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)
NGCMN:年轻代(young)中初始化(最小)的大小 (字节)
NGCMX:年轻代(young)的最大容量 (字节)
NGC:年轻代(young)中当前的容量 (字节)
OGCMN:old代中初始化(最小)的大小 (字节)
OGCMX:old代的最大容量 (字节)
OGC:old代当前新生成的容量 (字节)
PGCMN:perm代中初始化(最小)的大小 (字节)
PGCMX:perm代的最大容量 (字节)
PGC:perm代当前新生成的容量 (字节)
S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O:old代已使用的占当前容量百分比
P:perm代已使用的占当前容量百分比
S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)
S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)
ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)
DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)
TT: 持有次数限制
MTT : 最大持有次数限制