社区
C++ 语言
帖子详情
如下这种情况要不要处理内存碎片??
weiwuyuan
2012-01-03 04:24:41
以一个游戏程序为例:
游戏在运行中需要频繁的播放动画,其中会涉及到大量的内存分配需求.
(有些动画很大,比如有的是640×480的,共有88帧)
下面是加载一张图片的步骤:
1:从精灵封包中读取指定精灵(一个包含文件头、bmp的数据),这需要一段内存
2:从读出的精灵数据中,解压出bmp数据,这又需要一段内存
如果上面这2个内存需求都简单的malloc/free,会造成内存碎片么?
不知道现在的操作系统是否会对这种内存分配做优化处理??
...全文
74
5
打赏
收藏
如下这种情况要不要处理内存碎片??
以一个游戏程序为例: 游戏在运行中需要频繁的播放动画,其中会涉及到大量的内存分配需求. (有些动画很大,比如有的是640×480的,共有88帧) 下面是加载一张图片的步骤: 1:从精灵封包中读取指定精灵(一个包含文件头、bmp的数据),这需要一段内存 2:从读出的精灵数据中,解压出bmp数据,这又需要一段内存 如果上面这2个内存需求都简单的malloc/free,会造成内存碎片么? 不知道现在的操作系统是否会对这种内存分配做优化处理??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
giant1st
2012-01-03
打赏
举报
回复
内存碎片取决于 你使用的内存的大小的顺序。
如果你每次申请内存的大小,都比前一次释放的内存大小要小,那么就申请就总能成功。
BMP数据已经在你读取的精灵变量中,为什么还要再次需要内存来解压,难道是第一次读取的压缩的BMP数据?
内存碎片参考: http://www.eetop.cn/blog/html/11/317611-14192.html
proorck6
2012-01-03
打赏
举报
回复
让windows去管理内存吧,我们休息一下。
weiwuyuan
2012-01-03
打赏
举报
回复
[Quote=引用 1 楼 taodm 的回复:]
你等到出了内存碎片后再来问吧。
我都怀疑有几个人真遇过内存碎片。
[/Quote]
如果要处理内存碎片,那就得将内存的分配和释放做成一个接口了,这问题就大了,因为要自己写一个内存管理器……
qq120848369
2012-01-03
打赏
举报
回复
楼主大可不必担心, 正如taodm所说, 有几个人能遇见碎片?
Lighttpd就没内存池, 照样跑的嗖嗖的.
taodm
2012-01-03
打赏
举报
回复
你等到出了内存碎片后再来问吧。
我都怀疑有几个人真遇过内存碎片。
Java必突-JVM知识专题(三):啥是
内存
碎片
?Minor GC[复制算法的从始至终]、Full GC[标记整理算法]
前言: 1.自己负责的线上系统,到底如何合理设置JVM
内存
大小? 2.支付系统背景引入支付系统每秒钟需要
处理
多少笔支付订单? 3.每日百万交易的支付系统的压力在哪里?如果每日百万交易,那么再JVM的角度来看,就是每天都会在JVM中创建上百万个支付订单对象{1.我们的支付系统需要部署多少台机器?2.每台机器需要多大的
内存
空间3.每台机器上启动的JVM需要分配多大的堆
内存
空间?4.给JVM多大的
内存
空间才能保证可以支撑这么多的支付订单再
内存
中的创建,而不会导致
内存
不够直接崩溃?要想解决线上系统最核心的一个参数,
内存
碎片
以及垃圾回收
一.
内存
碎片
的产生
内存
分配有静态分配和动态分配两种,静态分配在程序编译链接时分配的大小和使用寿命就已经确定,而应用上要求操作系统可以提供给进程运行时申请和释 放任意大小
内存
的功能,这就是
内存
的动态分配。而动态分配将不可避免会产生
内存
碎片
的问题,那么什么是
内存
碎片
?
内存
碎片
即“
碎片
的
内存
”描述一个系统中 所有不可用的空闲
内存
,这些
碎片
之所以不能被使用,是因为负责动态分配
内存
的分配算法使得这
如何分配
内存
内存
碎片
处理
技术
内存
碎片
是一个很棘手的问题。如何分配
内存
决定着
内存
碎片
是否会、何时会、如何会成为一个问题。 即使在系统中事实上仍然有许多空闲
内存
时,
内存
碎片
还会最终导致出现
内存
用完的
情况
。一个不断产生
内存
碎片
的系统,不管产生的
内存
碎片
多么小,只要时间足够长,就会将
内存
用完。
这种
情况
在许多嵌入式系统中,特别是在高可用性系统中是不可接受的。有些软件环境,如 OSE 实时操作系统已经备有避免
内存
碎片
的良好工具
什么是Redis
内存
碎片
率?
碎片
如何清理?
我们发现Redis服务器
内存
不够用了,但是我们的
内存
使用没有那么多呀,这是,就要看是否你的
内存
碎片
率太大了。
碎片
率的计算 我们登陆到Redis服务器上,执行以下命令: info memory 我们会看到如下的信息: 其中mem_fragmentation_ratio就是
内存
碎片
率。 mem_fragmentation_ratio = used_memory_rss / used_memory...
redis
内存
碎片
整理
redis在大量申请、释放资源后,会产生
内存
碎片
,大量的
内存
碎片
会影响新
内存
的申请,本文分析redis自带的
内存
碎片
整理代码逻辑。
C++ 语言
64,676
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章