93 处理内存的命令(极客)

Linux 命令行工具之 top 命令
实时显示正在执行进程的 CPU 使用率、内存使用率以及系统负载等信息。

通过 top -Hp pid 查看具体线程使用系统资源

Linux 命令行工具之 vmstat 命令

vmstat 是一款指定采样周期和次数的功能性监测工具,我们可以看到,它不仅可以统计内存的使用情况,还可以观测到 CPU 的使用率、swap 的使用情况。
在这里插入图片描述
r:等待运行的进程数;b:处于非中断睡眠状态的进程数;swpd:虚拟内存使用情况;free:空闲的内存;buff:用来作为缓冲的内存数;si:从磁盘交换到内存的交换页数量;so:从内存交换到磁盘的交换页数量;bi:发送到块设备的块数;bo:从块设备接收到的块数;in:每秒中断数;cs:每秒上下文切换次数;us:用户 CPU 使用时间;sy:内核 CPU 系统使用时间;id:空闲时间;wa:等待 I/O 时间;st:运行虚拟机窃取的时间。

JDK 工具之 jstat 命令
jstat 可以监测 Java 应用程序的实时运行情况,包括堆内存信息以及垃圾回收信息。我们可以运行 jstat -help 查看一些关键参数信息。
jstat -option 查看 jstat 有有哪些操作。

-class:显示 ClassLoad 的相关信息;-compiler:显示 JIT 编译的相关信息;-gc:显示和 gc 相关的堆信息;-gccapacity:显示各个代的容量以及使用情况;-gcmetacapacity:显示 Metaspace 的大小;-gcnew:显示新生代信息;-gcnewcapacity:显示新生代大小和使用情况;-gcold:显示老年代和永久代的信息;-gcoldcapacity :显示老年代的大小;-gcutil:显示垃圾收集信息;-gccause:显示垃圾回收的相关信息(通 -gcutil),同时显示最后一次或当前正在发生的垃圾回收的诱因;-printcompilation:输出 JIT 编译的方法信息。

举例:
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:Old 代的容量(单位 KB);OU:Old 代目前已使用空间(单位 KB);MC:Metaspace 的容量(单位 KB);MU:Metaspace 目前已使用空间(单位 KB);YGC:从应用程序启动到采样时年轻代中 gc 次数;YGCT:从应用程序启动到采样时年轻代中 gc 所用时间 (s);FGC:从应用程序启动到采样时 old 代(全 gc)gc 次数;FGCT:从应用程序启动到采样时 old 代(全 gc)gc 所用时间 (s);GCT:从应用程序启动到采样时 gc 用的总时间 (s)。

jstack pid 命令查看线程的堆栈信息,通常会结合 top -Hp pid 或 pidstat -p pid -t 一起查看具体线程的状态,也经常用来排查一些死锁的异常。每个线程堆栈的信息中,都可以查看到线程 ID、线程的状态(wait、sleep、running 等状态)以及是否持有锁等。


版权声明:本文为Alice_whj原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。