521
阿裏雲
技術社區[雲棲]
C寫個吃內存的測試LINUX 係統可用內存持續減少的原因
C 內存測試
06
|
main( int argc, char **
argv )
|
11
|
iSize
= atoi (
argv[1] );
|
14
|
printf ( "Usage:
eatmem <size>\n" ;
|
17
|
//
if( NULL != ( pTest = (char*) malloc( iSize*sizeof(char) )))
|
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 就又回來了.
最後更新:2017-04-03 21:30:11