内存的管理(2)

简介: 内存的管理

加入我们有一个进程p1占用6k内存大小

此时p2进来占用2k进程,但是我们不能用p1所占剩下的2k空间

 

所以p1的进程剩下的2k内存空间就被浪费了,浪费的空间叫做内存碎片。

但是当p1执行完毕,被系统释放内存回收之后其他进程依旧可以进入。

实现上面的功能,我们需要记录两个情况,一个是我们有那些区域可用,另一个是那些区域被占用。

这里说了一个问题,最后我们会在内存中看到很多大小不一的“洞”(a hole)

问题演示

假设我们是下面大的进程集需要系统分配空间,那么1、2、3进来之后我们有一个洞,这时候4、5、6可以填补这个洞,那么这时2释放空间之后,我们有第二个洞,那么这个洞只有等7来占用,长此以往下去小的洞会越来越多。

 

 

动态存储分配问题

三个算法,分配原理不同,应用场景不同

第二个和第三个都需要便利内存

 

地址转换与保护

地址越界提示,需要查看变址寄存器

 

内部碎片

对固定大小内存分区内部产生的空出来的内存空间

 

外部碎片

可变分区长时间分配之后会产生很多大小不一的洞,这些洞实在太小了无法再被分配,这些洞叫做外部碎片

 

这里有一个算法,这个算法的原理是将内存一直向上或者向下移动(一个方向),这样就会将碎片覆盖,这个算法叫做compaction

注意:如果这里地址转化是静态的,也就是加载时内存基址被确定,那么这样就无法移动,那么也就无法使用这个算法;还有检测机制是需要有一定开销的,我们考虑是否开销的浪费大于内存碎片的浪费。

 

相关文章
|
存储 监控 算法
【C++ 软件设计思路】高效管理历史任务记录:内存与磁盘结合的策略解析
【C++ 软件设计思路】高效管理历史任务记录:内存与磁盘结合的策略解析
319 0
|
存储 设计模式 监控
运用Unity Profiler定位内存泄漏并实施对象池管理优化内存使用
【7月更文第10天】在Unity游戏开发中,内存管理是至关重要的一个环节。内存泄漏不仅会导致游戏运行缓慢、卡顿,严重时甚至会引发崩溃。Unity Profiler作为一个强大的性能分析工具,能够帮助开发者深入理解应用程序的内存使用情况,从而定位并解决内存泄漏问题。同时,通过实施对象池管理策略,可以显著优化内存使用,提高游戏性能。本文将结合代码示例,详细介绍如何利用Unity Profiler定位内存泄漏,并实施对象池来优化内存使用。
1487 0
|
存储 监控 算法
Java中如何管理内存?
【7月更文挑战第10天】Java中如何管理内存?
185 2
|
监控 算法 Java
Python中管理内存
Python中管理内存
|
存储 Java C++
Java虚拟机(JVM)在执行Java程序时,会将其管理的内存划分为几个不同的区域
【6月更文挑战第24天】Java JVM管理内存分7区:程序计数器记录线程执行位置;虚拟机栈处理方法调用,每个线程有独立栈;本地方法栈服务native方法;Java堆存储所有对象实例,垃圾回收管理;方法区(在Java 8后变为元空间)存储类信息;运行时常量池存储常量;直接内存不属于JVM规范,通过`java.nio`手动管理,不受GC直接影响。
125 5
|
监控 算法 Java
使用Python的垃圾回收机制来管理内存
使用Python的垃圾回收机制来管理内存
|
监控 算法 Java
Java虚拟机(JVM)使用多种垃圾回收算法来管理内存,以确保程序运行时不会因为内存不足而崩溃。
【6月更文挑战第20天】Java JVM运用多种GC算法,如标记-清除、复制、标记-压缩、分代收集、增量收集、并行收集和并发标记,以自动化内存管理,防止因内存耗尽导致的程序崩溃。这些算法各有优劣,适应不同的性能和资源需求。垃圾回收旨在避免手动内存管理,简化编程。当遇到内存泄漏,可以借助VisualVM、JConsole或MAT等工具监测内存、生成堆转储,分析引用链并定位泄漏源,从而解决问题。
113 4
|
存储 Java C++
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据,如局部变量和操作数;本地方法栈支持native方法;堆存放所有线程的对象实例,由垃圾回收管理;方法区(在Java 8后变为元空间)存储类信息和常量;运行时常量池是方法区一部分,保存符号引用和常量;直接内存非JVM规范定义,手动管理,通过Buffer类使用。Java 8后,永久代被元空间取代,G1成为默认GC。
172 2
|
存储 缓存 监控
深入解析Elasticsearch的内存架构与管理
深入解析Elasticsearch的内存架构与管理
深入解析Elasticsearch的内存架构与管理