swap 简介:
Swap分区在系统的物理内存不够用的时候,把硬盘内存中的一部分空间释放出来,以供当前运行的程序使用。
那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,
等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。
查看进程 swap 占用情况
1、命令:
for i in $( cd /proc;ls |grep "^[0-9]"|awk ' $0 >100') ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps 2>/dev/null ; done | sort -k2nr | head -10
# head -10 表示 取出 前10个内存占用高的进程
# 取出的第一列为进程的id 第二列进程占用swap大小
2、根据进程id 查看是哪个进程
ps -ef | grep 进程id
查看进程占用内存的情况:
1、查看具体进程占用
top -p 进程id
# 查看进程内存占用、cpu占用等信息
2、查看进程内,具体的线程占用情况
top -H -p 进程id
# 如 top -H -p 23194
3、转换线程Id
printf "%x\n" 进程id
# 如转换出来为:5aa3
4、使用jstack打印进程堆栈信息
jstack -l 进程id
5、根据转换出来的线程id,查看线程执行信息
jstack 进程id | grep 进程id -A 30
# 如 jstack 23194| grep 5aa3 -A 30