首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux中的malloc挂起

Linux中的malloc挂起
EN

Stack Overflow用户
提问于 2010-06-17 22:58:37
回答 3查看 2.3K关注 0票数 1

我在一台有16G内存和2个四核CPU的机器上使用SUSE10Linux。有8个进程正在做一些工作(CPU密集型/网络i/o)。其中有4个有内存泄漏(这些都是测试条件,所以在这里有泄漏没有问题)。所有进程占用的总空间约为15.4G,系统中仅有200MB可用空间。在一段时间内,一切都很好。但是在那之后,malloc挂起了(对于一个没有内存泄漏的进程)。它被卡住了超过4分钟(注意CPU不是100%,但是io已经明显上升了)。现在挂起的进程中没有问题(它没有损坏内存)。malloc在做什么?(它是在尝试整理碎片还是构建交换空间)。

有什么建议吗?

EN

回答 3

Stack Overflow用户

发布于 2010-06-17 23:14:57

如果malloc()需要很长时间,那么您可能正在遍历一个零碎的空闲列表,其中的许多条目已经被替换掉了。这与低CPU、高IO和有限的可用RAM一致。

有关malloc()实现的更多信息(包括了解零碎的空闲列表),请参阅维基百科的文章:http://en.wikipedia.org/wiki/Malloc#Implementations

哦,内存泄漏是不可接受的,即使在测试环境中也是如此。正如你所看到的,他们正在干扰(据你所知)没有泄漏的程序,并耗费你的时间。

票数 4
EN

Stack Overflow用户

发布于 2010-06-17 23:01:49

这可能很烦人,但我建议在阻塞的进程上使用Valgrind。可能有一些您以前没有检测到的错误。至少,您可能对正在发生的事情有一个概念。但是,几个小时可能会变成几天:/

票数 1
EN

Stack Overflow用户

发布于 2010-06-17 23:17:42

在你的机器寿命很短之前,内存是短命的。现在,您的malloc超出了计算机的16G限制,并且您的系统开始交换。但是,按照PierreBdR的提示检查您的应用程序肯定是个好主意。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3062831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档