总是会回头去学习内存管理,可是又总是会学了又忘,或许对我这种没有真正好好写过程序的人来说,要弄懂它们真的不是一件容易的事情。

     常常从任务管理器和process explorer种可以看到关于内存的各个概念,那么它们到底什么意思呢 ?

      以下写上我比较口语化的简单的理解,或许还有偏颇,待我再深入了解后发现错误再改回来。

          vitrual memory:这是由于每个进程都能看到4G内存,而实际的物理内存是不可能那么大的,关键是很多进程共享的,那么操作系统就欺骗进程告诉它有4G.而实际操作系统只给working set和private bytes这些物理内存给它,当进程访问一个自己认为的地址的时候,都会被操作系统转换,如果在物理内存里面就让它访问,如果没有,就会触发页错误,操作系统就去磁盘上(也就是你设定的那个windows页文件pagefile.sys)寻找指定的页面,然后把它载入到内存,再让进程访问

          workingset:表示系统让这个进程可以使用的物理内存数量,由系统处理,主要为了代码运行而使用。

          private bytes:表示进程自己提交申请的内存,主要是位了存放数据。

          ws private:记录了在workingset中被进程独享的空间大小。

          ws shareable 表示这些可以被其他进程共享,但包括没有共享和已经共享的。

          ws shared 表示已经共享的,一般应该是kernel32.dll这类文件

    page faults 每个进程都有working set,即指定的物理内存数量,当访问的内存不在物理内存时,就会一次page faults.

 12.23.2008 by vivilisa