内存碎片的定义、种类、产生原因以及解决办法
定义
内存碎片就是碎片的内存,描述一个系统中所有不可用的空闲内存。内存是空闲的但是不可用,是因为负责动态分配内存的分配算法使得这些空闲的内存无法使用,原因在于这些个空闲内存比较小并且不连续,无法满足内存管理算法中的申请需求。
种类及产生原因
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!)
内存碎片的定义、种类、产生原因以及解决办法相关推荐
- 内存泄漏的原因及解决办法_探索内存碎片化 - 第288篇
相关历史文章(阅读本文之前,您可能需要先看下之前的系列 ) 色谈Java序列化:女孩子慎入 - 第280篇 烦不烦,别再问我时间复杂度了:这次不色,女孩子进来吧 - 第281篇 双向链表,比西天还远? ...
- IE6,IE7,FF等浏览器不兼容原因及解决办法(转)
IE6,IE7,FF等浏览器不兼容原因及解决办法 2008-07-15 11:26 本文转载,作者:阿里巴巴前端开发,发到这里只是方便以后查看,也给各位需要的朋友. 浏览器的不兼容,大家肯定都是深恶痛 ...
- c语言 执行free函数程序被卡住,FreeRTOS操作系统,在按键中断函数中恢复被挂起的任务,程序卡死的原因和解决办法...
FreeRTOS操作系统,在按键中断函数中恢复被挂起的任务,程序卡死的原因和解决办法 时间:2019-08-10 14:39:47 来源: 作者: 所属栏目:其他服务端 这里将告诉您FreeRT ...
- element-ui Notification重叠问题,原因及解决办法
在1个方法中调用两次this.$notify方法,会出现通知框重叠的问题 methods: {checkLogin: function () {if (this.username === '') {t ...
- 移动端html右滑空白,BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法...
最近的一个项目 前台使用了 bootstrap.css + angularjs, 后台只处理数据(用的php,处理结果直接 json_encode($arr),非常爽).一直在Chrome的仿真机测试 ...
- MySQL 主从同步延迟的原因及解决办法
首页 博客 专栏·视频 下载 论坛 问答 代码 直播 能力认证 高校 会员中心 收藏 动态 消息 创作中心 MySQL 主从同步延迟的原因及解决办法 hao_yunfeng 2018-09-04 23 ...
- sketch颜色和html颜色不一致,photoshop和sketch中图片色彩不一致的原因和解决办法...
静电说:之前有用户提过类似的问题,他发现在photoshop中图片的色彩和sketch中图片的色彩不一致.下面看看静电翻译的一篇 bohemiancoding团队发表的博文,详细阐述了这种现象产生的原 ...
- c语言野指针导致问题,C语言进阶之路(三)----野指针的产生原因及解决办法
1.会产生野指针的做法 #include //这就是一种错误的写法 int main(){ int *p = NULL; p = (int *)malloc(); //释放P所指向的内存空间,但指针变 ...
- EM现象出现的原因及解决办法
EM现象出现的原因及解决办法 文章目录 EM现象出现的原因及解决办法 一.EM现象 (Electron Migration) 二.EM出现原因 三.EM解决办法 一.EM现象 (Electron Mi ...
- JVM出现OOM的八种原因及解决办法
本文源自转载:JVM出现OOM的八种原因及解决办法 目录 一.堆溢出 1.1 原因 1.2解决方法 二.永久代/元空间溢出 2.1 原因 2.2 解决方法 三.GC overhead limit ex ...
最新文章
- String Typing CodeForces - 954B
- TensorFlow学习笔记(二):快速理解Tutorial第一个例子-MNIST机器学习入门 标签: 机器学习SoftmaxTensorFlow教程 2016-08-02 22:12 3729人阅
- 插入排序(c++实现)
- 一块网卡绑定多个ip
- MATLAB加入螺旋相位板调制,平板式螺旋相位板的设计与应用
- Toonz开源,Apple开源CareKit,以及更多新闻
- java(Hello World) 常量 变量和注意事项
- abs和pc混在一起怎么解决_PC、ABS常见的7大问题及解决方案
- 怎样完善和推广自己的理论模型?
- 商汤科技20篇论文入选ICCV 2017,披露最新研究主线
- 前端项目集成 stylelint
- ubuntu联网_Ubuntu物联网操作系统新版发布,支持10年安全更新,镜像仅280M
- Linux系统下的RZSZ(文件传输工具)
- final修饰的类有什么特点?
- [2018.10.23 T1] 战争
- 【服务器数据恢复】异常断电导致ESXI系统无法连接存储的数据恢复
- 晒往期云栖大会的照片或感想_赢2017杭州云栖大会门票
- 计算机内存国产,拼多多上买的纯国产内存条会不会翻车?雷赤 内存条评测
- 求大神帮助 百练我爱北大,编程题目
- [置顶]定向爬虫 - Python模拟新浪微博登录
热门文章
- R语言实战应用精讲50篇(十七)--使用R语言实现时间序列分析
- 时间序列分析思维导图
- R语言绘图:直方图——hist
- 汇编语言---计算绝对值
- 《前端框架开发技术》HTML+CSS+JavaScript 制作个人简历模板
- 51单片机WIFI模块ESP8266-01s一定要看这个!普中科技给的模块 避免采坑!+CWJAP:3 FAIL 配置不了wifi名称和密码?
- web 应用程序与桌面应用程序的区别与优缺点
- 培训对于微软MCSA认证2011
- 基于深度学习的超大面积室内导航机器人Java后台软件设计
- 笔记| 计算机数据表示实验(HUST)| 汉字机内码获取实验