zoukankan      html  css  js  c++  java
  • Linux 内存的延迟分配

    Linux内存的延迟分配就是在你未使用内存(均值物理内存)的时候,操作系统是不会真正的分配物理内存的,

    比如

    int *p = (int*)malloc(1024 * 1024)

    如果接下来你没有访问p所指向的内存,那么你会看到进程占用的内存是不是包括这1M空间的。

    上面这句话是对的,但是还不够清楚,接下来的问题是,如果我开始使用内存,则会占用多少空间?

    比如我又写下了这样的代码:

    *p = 4;
    cout
    << *p << endl;

    这时候进程占用的内存是多少?我之前一直以为会是1M,但是实际上该处占用的内存少于1K。

    这里的原因我认为是OS分配物理内存的是以页为单位的,所以,只有某一页上的内存被访问,则该页才会被实际的映射到物理内存上来,也即开始占用物理内存。

    不仅malloc,mmap也是类似的表现。

    观察进程内存访问:pid=`ps aux | grep 进程名 | grep -v grep | awk -F" " '{print $2}'`; top -p $pid

  • 相关阅读:
    初学者常用的LINUX命令
    logging模块全总结
    logging模块初识
    xpath知多少
    selenium常用的API
    系统测试基础(适合入门)
    JavaScript正则表达式(一)
    webpack2学习(二)
    webpack2学习(一)
    SQL语句学习
  • 原文地址:https://www.cnblogs.com/raymondshiquan/p/2073103.html
Copyright © 2011-2022 走看看