作者Xphenomenon (啦 )
看板LinuxDev
标题Re: [问题] 释放记忆体 free 与 sleep ?
时间Wed Jun 10 23:46:32 2009
※ 引述《Xphenomenon (啦 )》之铭言:
: 标题: [问题] 释放记忆体 free 与 sleep ?
: 时间: Wed Jun 10 14:16:02 2009
:
: 请问一下,当我在 free 某一个之前配置的记忆体时,在 free() 的下一行如果
: 我加 sleep(1) 的话,我去 cat /proc/meminfo 时,记忆体并没有被释放掉,
: 但是如果不加上 sleep(1) 的话却是正常释放的,请问这是为甚麽呢? linux
: 的记忆体管理机制有特别的地方吗?因为现在记忆体不足,我必须边释放边写值
: 到 file 里面,但是假设在 free 之後加上 sleep() 或 write() 的动作的话,
: 我的记忆体却没有真正的释放给系统,请问有人有类似的情况吗? 感谢了!
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 60.251.211.196
: 推 CriLit:cat /proc/[pid]/maps 的结果呢 ? 06/10 22:42
: → CriLit:重复运用那个 buffer 呢 ? 一定需要一直 malloc/free 吗 ? 06/10 22:43
因为记忆体的限制,只能一边释放一块,一边写档,我 google 一下,似乎
libc 的 free() 并会不真正的将 memory 还给 kernel,除非他自己维护的
threshold 值达到,因为我配置的记忆体是存放在自己维护的 memory node
linked list 里,每一个 node 大概 4k 左右,free() 时 libc 没回应,
网路上有人说可以使用 mallopt() 强迫配置记忆体时使用 mmap() 方式,
但此方法在我的环境下是没有作用的,真伤脑筋呀....
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.251.211.196