定义

内存碎片就是碎片的内存,描述一个系统中所有不可用的空闲内存。内存是空闲的但是不可用,是因为负责动态分配内存的分配算法使得这些空闲的内存无法使用,原因在于这些个空闲内存比较小并且不连续,无法满足内存管理算法中的申请需求。

种类及产生原因

1、内部碎片

因为所有的内存分配必须起始于可被 4、8 或 16 整除(内存对齐,视处理器体系结构而定)的地址或者因为 MMU 的分页机制的限制,决定内存分配算法仅能把预定大小的内存块分配客户。就是分配满足上面对齐条件的最小的内存大小,如果申请的不满足对齐条件,势必会多分配一点不需要的多余内存空间,造成内部碎片。如:申请 43 Byte,因为没有合适大小的内存,会分配 44 Byte 或 48 Byte,就会存在 1 Byte 或 3 Byte 的多余空间。

2、外部碎片

频繁的分配与回收物理页面会导致大量的、连续且小的页面块夹杂在已分配的页面中间,从而产生外部碎片。比如有一块共有 100 个单位的连续空闲内存空间,范围为 0 ~ 99,如果从中申请了一块 10  个单位的内存块,那么分配出来的就是 0 ~ 9 。这时再继续申请一块   5个单位的内存块,这样分配出来的就是 10 ~ 14 。如果将第一块释放,此时整个内存块只占用了 10 ~ 14 区间共 5 个单位的内存块。然后再申请 20个单位的内存块,此时只能从 15 开始,分配 15 ~ 24 区间的内存块,如果以后申请的内存块都大于 10 个单位,那么 0 ~ 9 区间的内存块将不会被使用,变成外部碎片。

解决办法

伙伴算法:https://blog.csdn.net/itworld123/article/details/104418880

(SAW:Game Over!)

内存碎片的定义、种类、产生原因以及解决办法相关推荐

  1. 内存泄漏的原因及解决办法_探索内存碎片化 - 第288篇

    相关历史文章(阅读本文之前,您可能需要先看下之前的系列 ) 色谈Java序列化:女孩子慎入 - 第280篇 烦不烦,别再问我时间复杂度了:这次不色,女孩子进来吧 - 第281篇 双向链表,比西天还远? ...

  2. IE6,IE7,FF等浏览器不兼容原因及解决办法(转)

    IE6,IE7,FF等浏览器不兼容原因及解决办法 2008-07-15 11:26 本文转载,作者:阿里巴巴前端开发,发到这里只是方便以后查看,也给各位需要的朋友. 浏览器的不兼容,大家肯定都是深恶痛 ...

  3. c语言 执行free函数程序被卡住,FreeRTOS操作系统,在按键中断函数中恢复被挂起的任务,程序卡死的原因和解决办法...

    FreeRTOS操作系统,在按键中断函数中恢复被挂起的任务,程序卡死的原因和解决办法 时间:2019-08-10 14:39:47  来源:  作者:  所属栏目:其他服务端 这里将告诉您FreeRT ...

  4. element-ui Notification重叠问题,原因及解决办法

    在1个方法中调用两次this.$notify方法,会出现通知框重叠的问题 methods: {checkLogin: function () {if (this.username === '') {t ...

  5. 移动端html右滑空白,BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法...

    最近的一个项目 前台使用了 bootstrap.css + angularjs, 后台只处理数据(用的php,处理结果直接 json_encode($arr),非常爽).一直在Chrome的仿真机测试 ...

  6. MySQL 主从同步延迟的原因及解决办法

    首页 博客 专栏·视频 下载 论坛 问答 代码 直播 能力认证 高校 会员中心 收藏 动态 消息 创作中心 MySQL 主从同步延迟的原因及解决办法 hao_yunfeng 2018-09-04 23 ...

  7. sketch颜色和html颜色不一致,photoshop和sketch中图片色彩不一致的原因和解决办法...

    静电说:之前有用户提过类似的问题,他发现在photoshop中图片的色彩和sketch中图片的色彩不一致.下面看看静电翻译的一篇 bohemiancoding团队发表的博文,详细阐述了这种现象产生的原 ...

  8. c语言野指针导致问题,C语言进阶之路(三)----野指针的产生原因及解决办法

    1.会产生野指针的做法 #include //这就是一种错误的写法 int main(){ int *p = NULL; p = (int *)malloc(); //释放P所指向的内存空间,但指针变 ...

  9. EM现象出现的原因及解决办法

    EM现象出现的原因及解决办法 文章目录 EM现象出现的原因及解决办法 一.EM现象 (Electron Migration) 二.EM出现原因 三.EM解决办法 一.EM现象 (Electron Mi ...

  10. JVM出现OOM的八种原因及解决办法

    本文源自转载:JVM出现OOM的八种原因及解决办法 目录 一.堆溢出 1.1 原因 1.2解决方法 二.永久代/元空间溢出 2.1 原因 2.2 解决方法 三.GC overhead limit ex ...

最新文章

  1. String Typing CodeForces - 954B
  2. TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅
  3. 插入排序(c++实现)
  4. 一块网卡绑定多个ip
  5. MATLAB加入螺旋相位板调制,平板式螺旋相位板的设计与应用
  6. Toonz开源,Apple开源CareKit,以及更多新闻
  7. java(Hello World) 常量 变量和注意事项
  8. abs和pc混在一起怎么解决_PC、ABS常见的7大问题及解决方案
  9. 怎样完善和推广自己的理论模型?
  10. 商汤科技20篇论文入选ICCV 2017,披露最新研究主线
  11. 前端项目集成 stylelint
  12. ubuntu联网_Ubuntu物联网操作系统新版发布,支持10年安全更新,镜像仅280M
  13. Linux系统下的RZSZ(文件传输工具)
  14. final修饰的类有什么特点?
  15. [2018.10.23 T1] 战争
  16. 【服务器数据恢复】异常断电导致ESXI系统无法连接存储的数据恢复
  17. 晒往期云栖大会的照片或感想_赢2017杭州云栖大会门票
  18. 计算机内存国产,拼多多上买的纯国产内存条会不会翻车?雷赤 内存条评测
  19. 求大神帮助 百练我爱北大,编程题目
  20. [置顶]定向爬虫 - Python模拟新浪微博登录

热门文章

  1. R语言实战应用精讲50篇(十七)--使用R语言实现时间序列分析
  2. 时间序列分析思维导图
  3. R语言绘图:直方图——hist
  4. 汇编语言---计算绝对值
  5. 《前端框架开发技术》HTML+CSS+JavaScript 制作个人简历模板
  6. 51单片机WIFI模块ESP8266-01s一定要看这个!普中科技给的模块 避免采坑!+CWJAP:3 FAIL 配置不了wifi名称和密码?
  7. web 应用程序与桌面应用程序的区别与优缺点
  8. 培训对于微软MCSA认证2011
  9. 基于深度学习的超大面积室内导航机器人Java后台软件设计
  10. 笔记| 计算机数据表示实验(HUST)| 汉字机内码获取实验