[关于网络程序的内存分配讨论]

zhourenyun 2009-06-02 01:35:24
1 我没写过网络程序,所以今天被问到网络程序中忘记是客户端还是服务器 频繁的在堆(heap)中分配内存 会出现什么问题的时候比较迷茫
希望各位高手不吝赐教。
我似乎是模模糊糊的记得如果不停的分配会有内存碎片
但是如何产生碎片和如何消除碎片 或者是有什么相关问题希望大家能讨论讨论 顺便赐教下俺这个没入门的后生小子
...全文
84 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhourenyun 2009-06-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 Cat_Of_9Life 的回复:]
一般客户端不会考虑这个问题。服务器由于需要长时间不关闭地运行,如果不断分配和释放堆内存,就会产生大量的内存碎片。解决办法是采用内存池来管理
[/Quote]
谢谢,我了解大概是怎么回事了
zhourenyun 2009-06-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 kacy16 的回复:]
采用内存池技术,大致的过程是:一次性先分配好M数量的内存块,需要内外而且当M块内存没有使用完的时候,直接从M数量的
内存块中取,并把取得的内存块标记为使用.用完的时候,并不释放内存,直接把该块标记为空闲.
[/Quote]
=====
谢谢 说的很详细:)
hendriclee 2009-06-02
  • 打赏
  • 举报
回复
用内存池吧
kacy16 2009-06-02
  • 打赏
  • 举报
回复
采用内存池技术,大致的过程是:一次性先分配好M数量的内存块,需要内外而且当M块内存没有使用完的时候,直接从M数量的
内存块中取,并把取得的内存块标记为使用.用完的时候,并不释放内存,直接把该块标记为空闲.
Eleven 2009-06-02
  • 打赏
  • 举报
回复
内存池技术
doudouHuY 2009-06-02
  • 打赏
  • 举报
回复
内存碎片问题。可以自己写一个内存管理器来负责这些内存的分配和释放。
Cat_Of_9Life 2009-06-02
  • 打赏
  • 举报
回复
一般客户端不会考虑这个问题。服务器由于需要长时间不关闭地运行,如果不断分配和释放堆内存,就会产生大量的内存碎片。解决办法是采用内存池来管理
oyljerry 2009-06-02
  • 打赏
  • 举报
回复
频繁的分配内存,就会频繁的释放内存,new,delete,因而就会产生内存碎片,就会降低系统性能,所以如果需要频繁申请的时候,最好一开始分配一块大的内存,然后后面就使用这个内存,直到你不再需要的时候,再释放
zhourenyun 2009-06-02
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20010612/07/155590.html
zhourenyun 2009-06-02
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20020618/20/813713.html
=============
这个是以前别人的帖子 附上来作为参考
zhourenyun 2009-06-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 w29468 的回复:]
问题有点笼统。
内存碎片问题,可以自己管理内存,比如按不同大小预先分配好一组内存,需要时按照最适合的大小去用,用完后归还即可。如果网络通信是使用固定长度的消息包,那最好不过了。
[/Quote]
================
恩 问题是有点笼统,因为我不太清楚相关的问题
只能记得个大概 所以... 请见谅

另外就是如何会产生内存碎片 《个人觉得应该跟操作系统的内存分配有关,可惜又说不清楚 》
要不请大概指点下如何产生碎片?

谢谢你说的自己管理内存的方式
w29468 2009-06-02
  • 打赏
  • 举报
回复
问题有点笼统。
内存碎片问题,可以自己管理内存,比如按不同大小预先分配好一组内存,需要时按照最适合的大小去用,用完后归还即可。如果网络通信是使用固定长度的消息包,那最好不过了。

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧