免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 一梦如是

SIGKILL信号是否会引起内存泄露 [复制链接]

论坛徽章:
0
发表于 2007-03-11 15:57 |显示全部楼层
不会 leak 的, 一般这种要仔细考虑 leak 的程序都是一些长时间运行的服务, 稳定性很关键.
多进程进行服务从一定程度上可以减缓 memory leak 的问题. 因为子进程一旦退出那么 memory leak 的内存就被回收了. 当然应该尽量避免memory leak的问题

记得有说某些版本的c lib中free之后的内存不会立即还给系统, 而是继续等待给进程分配.
如果你不free, 内存是绝对不会还给OS, 除非进程退出. 如果malloc不还给系统, 那么这个内存其实还被进程使用着, 但是再一次malloc, 这些内存可能还能被分配给你. malloc如果需要更多内存会调sys_call的...然后malloc来管理这些内存. free也是在进程自己空间释放内存, c lib的程序会完成后续工作吧. (这个我不是很确定, 貌似是我看到过的...顺便求证下吧)

leak 是说你malloc出来的空间没有free, 而且因为指针变动, 无法将这些内存free掉. 这些内存在进程运行生命周期过程无法在被使用, 就是 memory leak 了. malloc 就可能因为没有足够内存重新调用sys_call去请求内存. 但是如果你把不用的内存 free 了, 那么malloc就可以把这个内存再一次分配给你. 所以 memory leak 一般就是进程运行时候, malloc的空间无法被free掉. 因为一般malloc的地址前面有关于分配这个地址空间的管理信息. 因此, 一旦这个地址丢失, 就无法free这空间了. 也就必须问OS申请新的空间. 但是OS很明白, 你退出必须把给你的资源都回收, 否则这绝对是个BUG OS...

[ 本帖最后由 Edengundam 于 2007-3-11 15:59 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP