Linux top VIRT RES SHR SWAP DATA内存参数详解
对于使用Linux/Unix系统的人来说,top已经是在常用不过的工具了,很多人都知道里面的参数的意思,却很少有人知道这些参数值在程序中是怎么反射出来的。例如:VIRT空间为什么比物理内存大?RES的空间在程序中都包含哪几部分?SWAP交换的都是那些空间?SHR是真正开辟的共享内存空间的大小么?DATA的空间大小指的又是什么,它和RES有那些区别?通过这些内存参数怎么看出我的程序有内存泄露等等问题,待我一一给你解答。
为了搞清楚以上的问题,我们用以下代码进行测试对其一一验证,并得出我们想要的结果。
科普篇:先说下VIRT、RES、SHR、SWAP、DATA这几个参数的意思吧(其他参数不是本篇的重点在此略过,关于top的博客都能找到)。咱们先看下Linux下的那个无所不知的男人怎么说的:
VIRT -- Virtual Image (KB) VIRT = SWAP +RES (公式1)
Thetotal amount of virtual memory used by the task. It includes all code, data andshared libraries plus pages that have been swapped out. (一个任务所使用的虚拟内存的总数。它包括所有的代码,数据和共享库,加上已换出的页面)说的还是比较清楚的,仔细的你或许已经从这段介绍中发现公式1是存在一些问题的(下面会做解释)
RES -- Resident size (KB) RES = CODE + DATA (公式2)
The non-swappedphysical memory a task has used. (一个任务正在使用的没有交换的物理内存)我们一般称为驻留内存空间。先给大家声明,man给出的这个公式2是有问题的,这个错误万恶的公式2估计误导了很多人。
SHR -- Shared Memory size (KB)
The amount ofshared memory used by a task. It simply reflects mem

本文详细解释了Linux `top` 命令中显示的VIRT, RES, SHR, SWAP, DATA等内存参数。通过测试代码在Linux 2.6.23.1-42.fc8系统上进行验证,尽管环境可能影响结果,但分析过程普遍适用。文章提出一个问题,即在测试中SWAP多出的1M空间来源不明,期待读者的反馈和讨论。"
109392057,9034821,HTTP协议详解,"['HTTP协议', '网络基础', 'Web服务器', '安全', '数据传输']
最低0.47元/天 解锁文章
8060

被折叠的 条评论
为什么被折叠?



