在首次适应和最佳适应之间的选择可能会影响碎片的量(对一些系统来说首次适应更好,对另一些系统最佳适应更好) 。另一个影响因素是从空闲块的哪端开始分配(顶端还是末端) 。不管使用哪种算法,外部碎片始终是个问题 。
根据内存空间总的大小和平均进程大小的不同,外部碎片的重要程度页页不同,例如,对采用首次适应方法的统计说明 。不管使用什么优化,假定有N个可分配块,那么可能有0.5N个外部为外部碎片 。即1/3的内存可能不能使用 。这一特性称为50%规则 。
一种解决外部碎片的问题的方法是紧缩(compaction),紧缩的目的是移动内存内容,以便所有空间合并成一整块 。但紧缩并非总是可能的 。如果重定位是静态的,并且在汇编时或装入市进行的,那么就不能紧缩 。紧缩仅在重定位是动态并在运行时可采用 。如果地址被动态重定位,可以首先移动程序和数据,然后再根据新基地址的值来改变基地址寄存器,如果能采用紧缩,还需要评估其开销,最简单的合并算法是简丹的将所有进程移动到内存的一端,而将所有的孔移到内存的另一端,以便生成一个大的空闲块,这种方案开销较大 。
另一种可能解决碎片问题的方法是允许物理地址空间为非连续 。这样只要有物理内存就可以为进程分配,这种方案有两种互补的实现技术: 分页和分段,这两种技术也可以合并 。
推荐阅读
- 内存最大的手机是什么手机 内存最大的手机1024gb
- Java中的HashCode方法与内存泄漏问题,你了解过吗?
- 高性价比5G手机盘点,大内存+后置4摄+8核处理器,1599元如何?
- 梦到连续捡了两个手机 梦见捡3个手机什么预兆
- 手机恢复出厂设置,会损坏手机吗?
- 原来华为这样清理内存,能清出几个G的内存这下手机终于流畅了
- 连续一年不吃肉只吃素食,会怎么样?明显的问题藏不住
- 连续输错5次密码,手机被锁?多亏这1招,轻松解锁
- 多肉植物下雨天可以放外面吗 连续下雨多肉放室外可以吗
- 面试被问:Redis 内存满了怎么办?