记得前面的一篇日志中提到过,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 ————————————————————————