Linux 性能分析命令
端口、进程以及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
命令后,它会在终端上以表格形式输出监测数据。
以下是一些示例用法:
- 监测 CPU 使用情况:
dstat -c
- 监测磁盘使用情况:
dstat -d
- 监测内存使用情况:
dstat -m
- 监测网络使用情况:
dstat -n
- 查看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,通常做法是:
-
1)首先配置JVM启动参数,让JVM在遇到OutOfMemoryError时自动生成Dump文件
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path
-
2)然后使用命令
jmap -dump:format=b,file=/path/heap.bin 进程ID 如果只dump heap中的存活对象,则加上选项-live。
-
3)然后使用MAT分析工具,如jhat命令,eclipse的mat插件。
最后在eclipse中安装MAT插件(http://www.eclipse.org/mat/),然后在eclipse中,file---->open,打开这个文件heap.bin,利用现成的OOM工具进行分析。
具体操作方法:首先输入网址http://www.eclipse.org/mat/previousReleases.php,然后查看你自己的Eclipse版本,我的是Indigo的,所以点击链接“Previous Releases”,选择Indigo版本的URLhttp://download.eclipse.org/mat/1.1.0/update-site/
用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 : 最大持有次数限制
- 感谢你赐予我前进的力量