社区
进程/线程/DLL
帖子详情
内存碎片的疑问
qwert1643ou65923
2011-06-16 12:29:25
上次面试有个人问我内存碎片是怎么处理的。把我问懵了 我一直以为 new malloc delete free 是不会产生内存碎片的。谁知道 来一起讨论下。。
...全文
172
14
打赏
收藏
内存碎片的疑问
上次面试有个人问我内存碎片是怎么处理的。把我问懵了 我一直以为 new malloc delete free 是不会产生内存碎片的。谁知道 来一起讨论下。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shenyi0106
2011-06-17
打赏
举报
回复
对于业务不大,或者不是长时间运行的程序而言,确实作用不大:
因为OS内存的管理是OS层面的东西,分配和释放也是OS层面的,当你要求分配内存是,OS先是判断有没有合适大小的内存块,如果没有则找比你要求大的内存块,如果有,就分隔,然后提交给你的请求,如果没有则会自动进行内存整理,这个过程是OS完成了,也是比较费时的,当然你如果业务不大,或者不长时间运行,这点时间对系统而言就是小case,不值得一题。
更多有关内存管理方面的东西,最好看看操作系统这本书
kyotrue
2011-06-17
打赏
举报
回复
单线程new了马上delete当然不会产生碎片了,每次new的大小都一样也不会有碎片的
qwert1643ou65923
2011-06-17
打赏
举报
回复
你说的对,我刚才开了个循环不断申请和释放试了试。发现物理内存还是虚拟内存都没变化 也就是没有碎片产生。。。
那碎片是个杂回事呢
向立天
2011-06-16
打赏
举报
回复
看看the c programming language
其中有对这类函数实现原理的讲解
shenyi0106
2011-06-16
打赏
举报
回复
要避免内存碎片,最好的办法就是采用内存池,否则不可避免
chenjiawei007
2011-06-16
打赏
举报
回复
内存碎片实际中遇到问题还是挺少的吧,不然你自己测试下,new后,delete() for循环+sleep(1),就算是个人版的xp也没啥事。
内存池的概念和线程池如出一折,但是线程的关闭开销和内存的new,delete差的太多啊,性能上不做大规模的并发处理并没有关系。
内存池还是看需求用吧,开多了浪费,开少了不行,没管理好容易崩溃,虽然能适当减少内存漏洞,但是带来的是内存的管理难度,并不是啥技术用了就是好。
shenyi0106
2011-06-16
打赏
举报
回复
内存池的作用是,一次new,多次使用,最后不用了在delete
哪来的碎片呢
qwert1643ou65923
2011-06-16
打赏
举报
回复
[Quote=引用 6 楼 shenyi0106 的回复:]
那你应该问他,你用啥子技术?顺便学习一下
[/Quote]
忘记问了。但是内存池中一样要用 new 和 delete 等。这些会产生内存碎片麽 内存碎片又是如何产生的
kyotrue
2011-06-16
打赏
举报
回复
你就给他说尽量少用new/delete、可以的话尽可能用局部变量就行了
帝国队长
2011-06-16
打赏
举报
回复
还有就是开内存的时候尽量开大一点,内存开得越小,产生的碎片越多,主要开小了回收来也不容易分出去。
shenyi0106
2011-06-16
打赏
举报
回复
那你应该问他,你用啥子技术?顺便学习一下
yao050421103
2011-06-16
打赏
举报
回复
内存池正解,其他方法太坑爹。。。
qwert1643ou65923
2011-06-16
打赏
举报
回复
我当时也是这样说的,说内存池,别人直接说没做过吧?。。。丢脸!
smwhotjay
2011-06-16
打赏
举报
回复
mempool解决!
Mesh:一种
内存
分配器,可自动减少CC ++应用程序的
内存
占用
Mesh是替代品,它可以透明地从
内存
碎片
中恢复,而无需更改应用程序代码。 在PLDI 2019上发表的中详细描述了网格。 或观看《怪圈》中Bobby Powers的演讲: Mesh在Linux和macOS上运行。 Windows正在开发中。 Mesh...
日常知识点之公开课
内存
碎片
优化(
内存
池)
以前学过
内存
池,跟着老师用手写的方式实现过c的
内存
池代码,也看过nginx的
内存
池,在自己的角度对
内存
池的概念,实现有一定的认知。 但有一次面试,面试官问到
内存
池的实现原理,如果基于
内存
池用new对对象进行
内存
...
需求
碎片
化时代,从编程到设计的心灵鸡汤【上集】
在大数据时代,业务需求
碎片
化成为潮流,因而软件系统日趋
碎片
化。只要将内容与形式分离,并关注形式就能掌握架构设计的精髓。尤其,在互联网&大数据时代里,需求
碎片
化成为主流趋势。需要以形式封装内容的多变...
内存
碎片
--网上摘录
本文介绍一种将堆栈中的
内存
碎片
降至最少的解决方案,其中讲到了
内存
碎片
和
内存
丢失的区别,以及一种在编程中有利于检测并消除
内存
丢失的策略。 标准C库函数malloc()和free()可在任意的时间段中,为应用分配任意...
深度分析!Redis数据库
内存
优化,
内存
碎片
最佳解决方案讲解!
作为
内存
数据库,
内存
空间大小对于 Redis 来说是至关重要的。
内存
越多,意味着存储的数据也会越多。但是不知道你有没有遇到过这样的情况,明明空间很大,但是
内存
的使用却不是很理想。 为什么会出现这样的情况呢?这...
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章