vm.overcommit_memory=2的测试
  TEZNKK3IfmPf 2023年11月14日 20 0

场景说明

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

#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

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

TEZNKK3IfmPf