vm.overcommit_memory=2的测试

前言:感谢您浏览该博客文章,如有任何的疑问或者意见欢迎通过邮件进行交流,提供linux技术支持。本人是Linux的布道者。

邮箱:[email protected]


场景说明:今天调试了分配内存的策略,看看是否会出现如果没有使用到的内存,系统就不会出现任何的异常,从中查看是否会有任何的缺陷。在实际的过程中,我们可以看到由于允许系统分配内存的过程中,过载的分配内存,导致出现无法执行其他的指令过程。测试代码如下:

#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 
#include<unistd.h> 
int main() 
{ 
        char* p=NULL; 
        while(1) 
        { 
                p=malloc(sizeof(int)*1000); 
                if(NULL==p) 
                { 
                        break; 
                } 
                /*
                下面的这一句话,保证了申请到的内存都是有效的,可被使用的,在内存分配原则中,就存在一种情况是,如果分配的内存不被使用,可以预先分配并不存在的内存,等待内存被释放,
                */
                memset(p,0x00,100); 
                
                usleep(10); 
        } 
        while(1) 
        { 
                sleep(1); 
        } 
        return 0; 
}

执行当前的代码之后,系统出现了异常:

~bash:fork can not allocate memory

可以说是让整个系统处于崩溃的边缘。无法执行任何的指令,从中我们了解到了这种内存分配策略的一些弊端。

你可能感兴趣的:(测试,overcommit)