Linux查看内存问题的方法

top命令可以实时动态地查看系统的整体运行情况

假装有图。自己虚拟机上打一下。

对每一项进行解释:

1.16:08:49 当前时间

2.up 10 min 当前系统已经运行10min

3.1 user 当前1个用户登录

4.load average: 0.37, 0.50, 0.29 平均负载的含义可以看这篇博客 load average的含义,总之,越高的话负载越重

第二行是对进程的描述

5.281 total 总共有281个进程

6.1 running 正在运行1个进程

7.280 sleeping 280个进程正在睡眠

8.0 stopped 停止的进程数0个

9.0 zombie 冻结的进程个数0

第三行是对CPU使用情况的描述

  1. 6.7 us 用户空间占比 6.7%

  2. 2.9 sy 内核空间占比2.9%

12.0.0 ni 用户进程空间内改变过优先级的进程占用CPU百分比0

  1. 88.2 id 空闲CPU百分比

14.2.2 wa等待输入输出的CPU时间百分比

第四行是对内存使用的描述

分别是:

物理内存总量
空闲内存总量
使用内存总量
用作内核缓存的内存亮
第五行是对交换区使用的描述

通过top命令,可以了解到哪一个线程可能是有问题的。找到有问题的线程后,通过jstack命令,将其堆栈信息打印出来。

sudo jstack -F PID

jmap 的使用

sudo -u tomcat jmap -dump:live,format=b,file=pid_3744.hprof 3744 输出存活的对象到二进制文件中 dump可以分析对象的大小情况

-histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.

-heap 这个只能看内存情况

sudo sz pid_3744.hprof 这个可以快速发送到本地

java -Xmx800m -jar C:\Users\qiwen.wei\Desktop\ha456.jar 启动工具

然后使用工具分析就可以了 ,我使用的分析工具是 Mat

你可能感兴趣的:(知识点整理)