聊一聊内存管理(二)

简介: 聊一聊内存管理(二)

在上一讲聊一聊内存管理(一)重点介绍了什么是内存管理,对内存管理有了整体的认识。简单来说就是,程序的运行需要内存,你如何管理并给这些程序分配内存。

 

本节介绍最简单的一种内存管理方案:单一连续区分配。为什么说这种内存分配是最简单的呢?接下来做详细的介绍。

 

单一连续区内存分配的基本思想是一段时间内只有一个进程在内存。将4G的内存分为两部分,一部分存放操作系统内核,另外一部分存放用户程序,且一段时间内只有一个用户程序在内存中。如图1-1所示:

 

1 单一连续区内存分配


T1时刻有进程P1,需要512MB的内存,那么将内存分配给P1,如图1-2所示;

T2时刻有进程P2,需要1GB的内存,由于单一连续区内存分配的特点,此时用户区已经有了P1在执行,即时剩余内存充足,P2也无法运行,只有在P1运行结束并释放内存之后才能运行P2

2 进程 P1的内存分布

 

从上面的分析大家可以看到这种内存分配方式非常的简单,可以说没有什么方法比这种还要简单的了。但是缺点也非常明显:

  • 一段时间内只能运行一个程序,因此无法实现多道程序;
  • 在运行一个进程后,即使有足够的剩余内存也无法执行新的进程,而只有等待该进程运行结束后才能继续执行,因此内存的利用率相当的低;
  • 如果进程所需的内存大于用户程序的总大小,则该进程将无法得到运行,因此对要运行的进程有很大的限制条件,不是什么进程都可以运行的。

 

相信看到这里,大家应该都能感受到,当我们遇到问题的时候,根据我们的经验积累会想到一种简单的解决思路,但是经过分析我们会发现这种解决问题的方法会有很多的问题,那么接下来我们就会分析这些问题,并提出新的的方法,如此反复,不断的提出新问题,不断的提出新方案解决新的问题,科技因此才不断的进步。

 

关于内存管理,你有什么更好的思路呢?欢迎留言。


相关文章
【C/C++内存管理】——我与C++的不解之缘(六)
【C/C++内存管理】——我与C++的不解之缘(六)
安卓应用开发中的内存管理优化技巧
在安卓开发的广阔天地里,内存管理是一块让开发者既爱又恨的领域。它如同一位严苛的考官,时刻考验着开发者的智慧与耐心。然而,只要我们掌握了正确的优化技巧,就能够驯服这位考官,让我们的应用在性能和用户体验上更上一层楼。本文将带你走进内存管理的迷宫,用通俗易懂的语言解读那些看似复杂的优化策略,让你的开发之路更加顺畅。
103 2
浅入 V8 内存管理
【8月更文挑战第31天】浅入 V8 内存管理
69 0
|
8月前
|
【C++初阶】—— C++内存管理
【C++初阶】—— C++内存管理
39 1
备战大厂,彻底搞懂垃圾回收机制底层原理(上)
备战大厂,彻底搞懂垃圾回收机制底层原理(上)
备战大厂,彻底搞懂垃圾回收机制底层原理(下)
备战大厂,彻底搞懂垃圾回收机制底层原理(下)
C++初阶(九)内存管理(下)
C++初阶(九)内存管理
169 0
C++初阶(九)内存管理(上)
C++初阶(九)内存管理(下)
171 0
【C++初阶】三、C/C++内存管理
目录 一、C/C++内存分布 二、C语言中动态内存管理方式 三、C++内存管理方式 3.1 new/delete操作内置类型 3.2 new 和delete 操作自定义类型 四、operator new与operator delete函数 五、new和delete的实现原理 5.1 内置类型 5.2 自定义类型 六、定位new表达式(placement-new)(了解) 七、常见面试题 7.1 malloc/free和new/delete的区别 7.2 内存泄漏 7.2.1 什么是内存泄漏,内存泄漏的危害 7.2.2 内存泄漏分类(了解) 7.2.3 如
153 0
【C++初阶】三、C/C++内存管理
聊一聊内存管理(一)
聊一聊内存管理(一)
106 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等