为什么即使RAM可用,Mac OS X也会将进程内存移动到交换状态?

时间:2011-10-21 12:34:02

标签: macos memory 64-bit osx-lion

我正在使用运行Mac OS X 10.7.2的8 GB RAM的Mac。我写了这个小程序来分配大约6GB的RAM:

#include<iostream>
#include<vector>

int main() {
    std::vector<char> vec;
    vec.resize(6442450944);
    std::cerr << "finished memory allocation\n";
    char c;
    std::cin >> c;
}

当我运行程序时,程序在某些时候不再获得实际内存,而是分配交换空间。即使已写入RAM的内容也会移至SWAP。我跑的时候

./memtest & FOO=$! && while true; do ps -orss -p $FOO | tail -n1; sleep 0.2s; done

我得到以下输出:

     4
524296
1052740
1574188
2024272
2493552
2988396
3481148
3981252
4484076
4980016
5420580 <= from here on, RSS goes down
5407772
5301416
5211060
5163212
5118716
5081816
5039548
4981152
4897772
4822260
4771412
4715036
4666308
4598596
4542028
4521976
4479732
4399104
4312240
4225252
finished memory allocation

当我开始第二个进程时,第一个进程的更多内存从RAM移动到SWAP。有没有办法控制这种行为并使Mac OS X使用可用的RAM?

0 个答案:

没有答案