聊一聊内存管理(二)

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

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

 

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

 

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

 

1 单一连续区内存分配


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

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

2 进程 P1的内存分布

 

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

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

 

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

 

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


目录
相关文章
|
3月前
|
存储 算法 Java
深入浅出Java内存管理
【8月更文挑战第28天】Java的内存管理是每个Java开发者都绕不过去的技术话题。本文将通过生动的比喻和直观的例子,带你走进Java内存管理的奇妙世界。我们将一起探索对象在Java虚拟机中的生命周期,了解栈与堆的区别,以及垃圾回收机制如何默默守护着我们的应用程序。准备好,我们即将启程!
54 14
|
16天前
|
存储 监控 算法
JVM调优深度剖析:内存模型、垃圾收集、工具与实战
【10月更文挑战第9天】在Java开发领域,Java虚拟机(JVM)的性能调优是构建高性能、高并发系统不可或缺的一部分。作为一名资深架构师,深入理解JVM的内存模型、垃圾收集机制、调优工具及其实现原理,对于提升系统的整体性能和稳定性至关重要。本文将深入探讨这些内容,并提供针对单机几十万并发系统的JVM调优策略和Java代码示例。
42 2
|
2月前
|
Java Android开发 UED
安卓应用开发中的内存管理优化技巧
在安卓开发的广阔天地里,内存管理是一块让开发者既爱又恨的领域。它如同一位严苛的考官,时刻考验着开发者的智慧与耐心。然而,只要我们掌握了正确的优化技巧,就能够驯服这位考官,让我们的应用在性能和用户体验上更上一层楼。本文将带你走进内存管理的迷宫,用通俗易懂的语言解读那些看似复杂的优化策略,让你的开发之路更加顺畅。
54 2
|
3月前
|
Web App开发 JavaScript 前端开发
浅入 V8 内存管理
【8月更文挑战第31天】浅入 V8 内存管理
33 0
|
4月前
|
存储 Java 数据库连接
Java堆栈内存管理与优化技巧的实践指南
Java堆栈内存管理与优化技巧的实践指南
|
存储 Linux C++
【C++杂货铺】内存管理(二)
【C++杂货铺】内存管理(二)
52 0
|
6月前
|
存储 编译器 程序员
『C++成长记』内存管理
『C++成长记』内存管理
|
存储 C语言 C++
【C++杂货铺】内存管理(一)
【C++杂货铺】内存管理(一)
80 0
|
12月前
|
存储 Java 编译器
【C++从0到王者】第七站:内存管理(520没有对象?那就new一个)
【C++从0到王者】第七站:内存管理(520没有对象?那就new一个)
65 0
|
存储 编译器 Linux
内存管理基础概念总述
内存管理基础概念总述
93 0