繁体   English   中英

Linux中的内存分配

[英]Memory allocation in Linux

我有一个多线程应用程序,在其中为数据分配缓冲区,然后在队列中等待通过套接字发送。 所有缓冲区都是可复制的,因为我在整个程序中仅使用固定大小的缓冲区(1024、2048、2080和5248字节)。 我注意到,我的程序通常同时使用多达10个每种长度类型的缓冲区。

到目前为止,我总是手动分配新缓冲区,然后在不再需要它的情况下释放它(使用malloc()和free())。 我开始怀疑Linux是否足够智能来为我缓存该内存,因此下次我分配新的缓冲区系统时,只会快速接收到我之前已经使用过的缓冲区,而不执行繁重的分配新内存块的操作?

是的,仅当空闲列表中没有满足请求的内容时,malloc()才会调用sbrk()/ brk()。 这意味着对于相同大小的内存,您可以随意调用malloc()/ free(),这很好。

这是否是一个真正有效的解决方案,这是另一个问题,但这可能足够快而无所谓。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM