看这个简单的程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
int
main()
{
    const int size = 2^30;
    char * p = new char[size];
    for(int i = 0; i < size; ++i)
    {
        p[i] = 0;
    }
    sleep(121);
    return 0;
}

  在后台运行该程序的多个实例,并查看内存占用:

1
2
3
4
5
6
7
8
9
[04:07 PM] ivan@ivan-desktop ~/cpp> ./test&
[1] 8345
[04:07 PM] ivan@ivan-desktop ~/cpp> ./test&
[2] 8346
[04:07 PM] ivan@ivan-desktop ~/cpp> ./test&
[3] 8347
[04:07 PM] ivan@ivan-desktop ~/cpp> ./test&
[4] 8348
[04:07 PM] ivan@ivan-desktop ~/cpp> free
             total       used       free     shared    buffers     cached
Mem:       1997172    1942672      54500          0     486080    1067476

  只占了十分之一左右!这又是为什么呢?永远也学不完的虚拟内存啊!

  呃……又SB了!const int size = 2^30;这哪里是1G啊!分明是28嘛!Orz…汇编码里面尽是28!这下好了,改成1<<30,运行了四个实例,机器就笨的像猪了:

System Monitor

System Monitor

  等程序结束了,刚开始运行着到浏览器也慢了一会儿,估计是被换到交换文件里面去了。

Tags: ,.
你好!除了代码,此处没有多少原创之物,皆为本人搜集、整理、总结之记录与心得,欢迎转载分享!转载时请尽量注明出处,将不胜感激。祝你健康、快乐!
Home

RFC: Request For Comments. Orz..

Name(required)
Mail (required),(will not be published)

RFC: Request For Comments. Orz..

Website(recommended)