![image-20220909075133155](/Users/mac/Library/Application Support/typora-user-images/image-20220909075133155.png)
凡是私有的内存都会体现在 /proc/meminfo 中的 AnonPages 这一项,凡 是共享的内存都会体现在 Cached 这一项,匿名共享的则还会体现在 Shmem 这一项。
进程直接读写的都是虚拟地址,虚拟地址最终会通过 Paging(分页)来转换为物理内存 的地址,Paging 这个过程是由内核来完成的。
进程的内存类型可以从 anon(匿名)与 file(文件)、private(私有)与 shared(共 享)这四项来区分为 4 种不同的类型,进程相关的所有内存都是这几种方式的不同组 合。
查看进程内存时,可以先使用 top 来看系统中各个进程的内存使用概况,再使用 pmap 去观察某个进程的内存细节。
如果 RES 太高而 SHR 不高,那可能是堆内存泄漏;如果 SHR 很 高,那可能是 tmpfs/shm 之类的数据在持续增长,如果 VIRT 很高而 RES 很小,那可能 是进程不停地在申请内存,但是却没有对这些内存进行任何的读写操作,即虚拟地址空间 存在内存泄漏。
Linux问题排查7, 网络4, 网络问题排查常用命令4