C 内存测试
06 | main( int argc, char ** argv ) |
11 | iSize = atoi ( argv[1] ); |
14 | printf ( "Usage: eatmem <size>\n" ; |
18 | if ( NULL != ( pTest = new char [ iSize ] )) |
19 | printf ( "Eat memory %ld\n" , iSize ); |
21 | printf ( "No such more memory!\n" ); |
23 | memset (pTest,0,iSize); |
先查看系统的空闲内存 , 约 1.8G
# free
total used free shared buffers cached
Mem: 2061652 194896 1866756 0 13872 23648
-/+ buffers/cache: 157376 1904276
Swap: 4096312 141040 3955272
运行 eatmem 这个程序, 吃掉500M
./eatmem 500000000 &
再看系统的空闲内存, 少了500M 左右.
# free
total used free shared buffers cached
Mem: 2061652 684476 1377176 0 14024 23648
-/+ buffers/cache: 646804 1414848
Swap: 4096312 141036 3955276
退出eatmem 再看, 内存几乎都回来了.
[root@l149 root]# free
total used free shared buffers cached
Mem: 2061652 195600 1866052 0 14064 23648
-/+ buffers/cache: 157888 1903764
Swap: 4096312 141036 3955276
又做了一下试验....写个2G 的文件试试...
[root@l149 root]# free
total used free shared buffers cached
Mem: 2061652 197080 1864572 0 14276 23648
-/+ buffers/cache: 159156 1902496
Swap: 4096312 141036 3955276
[root@l149 root]# dd if=/dev/zero of=2000M.file bs=10485760 count=200
200+0 records in
200+0 records out
[root@l149 root]# free
total used free shared buffers cached
Mem: 2061652 2043584 18068 0 14332 1874308
-/+ buffers/cache: 154944 1906708
Swap: 4096312 141036 3955276
嘿嘿, 一写完文件, Free memory 就没有了.
有趣的是, 把这个文件一删除, Free memory 就又回来了.