VIRT:进程所有内存;注意这里包括了申请但是还没使用的,比如:
step1:
// arr_size=10
void alloc(char** p, int arr_size) {
for (int i = 0; i < arr_size; i++) {
int size = 1024*1024*1024;
p[i] = (char*)malloc(size);
if (p[i] == NULL) {
cout<<"malloc failed!"<<endl;
exit(-1);
}
}
}
这里申请了10G内存,但是没有使用,所以观察进程RES并没有增长10G,也就是这10G给内核说我要、但是我还没用,那么内核肯定不会傻啦吧唧的就直接开辟10G空间给你用,肯定是你要用的时候才给你分配;
此时VIRT显示10G,但res很小
step2:
// arr_size
void use(char** p, int arr_size) {
for(int i = 0; i < arr_size; i++) {
int size = 1024*1024*1024;
for(int j = 0; j < size; j++) {
p[i][