Linux top命令中的SWAP与DATA

记得前面的一篇日志中提到过,Linux top命令中的SWAP是通过 VIRT – RSS计算出来的;但是SWAP真的就代表占用磁盘的SWAP的空间大小吗?
我们知道linux的内存使用是采用记账的方式的,比如,我malloc了1G的内存,但是我什么都没存,于是,我们的RSS占用没有增加,我的VIRT却显示多了1G; 显然,通过top命令查看,该进程的SWAP为1G; 但是查看SWAP的占用量并没有增加;
再观察DATA,占用也是1G,说明只要malloc了,就算使用了。

测试程序:
=============== malloc.c =================
#include <stdio.h>
#include <stdlib.h>

int main() {
        char *c = malloc(1024 * 1024 * 1024);
        sleep(10000);
        return 0;
}
==========================================
gcc -o malloc malloc.c

./malloc

top:
———————————————————————–
Mem:   2074828k total,  2049228k used,    25600k free,   280568k buffers
Swap:  8385888k total,    17000k used,  8368888k free,  1458464k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  SWAP CODE DATA COMMAND                                  
23673 root      16   0 1026m  276  220 S  0.0  0.0   0:00.00 1.0g    0 1.0g malloc    ————————————————————————

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据