免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1746 | 回复: 7
打印 上一主题 下一主题

关于linux的内存管理的问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-29 11:04 |只看该作者 |倒序浏览
现在想问一下,linux的内核和上层应用使用的动态内存,包括UI的Qt分配的动态分配的内存,是经过linux源码的哪个文件的的哪个函数动态分配的?是不是slab.c的里面的kmalloc函数吗?
多谢!

论坛徽章:
0
2 [报告]
发表于 2006-05-29 11:18 |只看该作者
用户空间的内存是由sys_brk分配的,用户也可以用mmap分配内存(虽然它主要的用途不在于此)

论坛徽章:
0
3 [报告]
发表于 2006-05-29 11:43 |只看该作者

回复 2楼 qtdszws 的帖子

现在我想监控系统的内存泄漏的情况,需要从检测上层的动态分配的内存,那么我需要在kernel中,在动态分配和释放的地方加个标注,这样可以看是否有内存泄漏,需要在哪些文件和函数中加才能覆盖系统的动态分配的内存呢?
谢谢!

论坛徽章:
0
4 [报告]
发表于 2006-05-30 14:41 |只看该作者
如果你要实现这个功能,首先需要知道的是,你在应用层分配的内存,不是直接从linux获取的,而是通过了glibc这个中间层,所以如果你要准确地监控你们应用的内存,那么就要在glibc提供的接口上封装一层(也就是malloc/free接口),以此来做一些监控操作。

论坛徽章:
0
5 [报告]
发表于 2006-05-30 14:43 |只看该作者

论坛徽章:
0
6 [报告]
发表于 2006-05-30 14:55 |只看该作者
监测内存泄漏还是用官方的valgrind工具吧

论坛徽章:
0
7 [报告]
发表于 2006-05-30 15:33 |只看该作者
内存泄漏工具不是万能的,你不能用它来检测有二三十个应用的内存泄漏问题吧,而且如果你的项目一直在开发中,你要不停地去用工具做检测,而且工具检测时,你要模拟各种环境,而且有了工具的存在,可能对你应用程序有影响,这些因素都会使你放弃内存检测工具。

而在基本的内存操作接口上封装一层,以此来检测内存泄漏、内存越界、内存重复释放等,而且这样做是一劳永逸的,只要你觉得某个应用程序有内存泄漏,你只要把内存中的统计信息打印出来就可以直接判断了。

除此之外,封装的那层还可以给我们添加额外的功能,如快速的小内存分配释放等。

所以如果你想要在一个大项目中管理好自己的内存,那么我建议你提前为自己做一个内存管理系统,以提供你需要的功能。

当然,如果你仅仅需要检测你的一个小程序的内存泄漏问题,内存泄漏检测工具是最划算的。

过些天,我可以把我们一个嵌入式系统的内存管理代码发出来供大家参考,以共同提高。

论坛徽章:
0
8 [报告]
发表于 2006-06-01 16:24 |只看该作者
大虾说得对!
我的想法也是自己做个检测工具,以便检测系统上各个应用程序,倾向于封装malloc/free (new/delete),这样可以检测是不是有内存泄漏!

但是要做这个,如果哪个进程有内存泄漏了,还得打印栈上地址,通过查找符号表查出函数名字,比较麻烦,而且具体修改代码的地方还没有找到呢。

您的内存管理的代码不知道是基于什么思想的?能编译到ARM平台上吗?包括内存泄漏的检测吗?
能否给我发份文档和源码?邮件地址为:zzgclym@hotmail.com
我是新手,希望多学点这方面的知识!!谢谢了先!

另外valgrind是挺好的工具,但是目前只是支持x86的,没有见到支持ARM的平台的!
如果有支持的ARM平台的话,就很好了!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP