免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: yjcq

malloc奇怪的现象 [复制链接]

论坛徽章:
0
发表于 2009-10-17 16:16 |显示全部楼层
man usleep。。。。

论坛徽章:
0
发表于 2009-10-17 23:45 |显示全部楼层
程序二:
#include
#include
main()
{

while(malloc(1024));
perror("error");
}


while(malloc(1024)); 这是一个死循环,如果内存没有耗尽,malloc返回为true, 直到内存耗尽为止。

[ 本帖最后由 lchxr 于 2009-10-17 23:51 编辑 ]

论坛徽章:
0
发表于 2009-10-19 18:04 |显示全部楼层
学习了

论坛徽章:
0
发表于 2009-10-20 08:48 |显示全部楼层

回复 #32 dragchan 的帖子

dragchan 怎么分析的?看源代码?

论坛徽章:
0
发表于 2009-10-20 10:04 |显示全部楼层
让CPU歇一会,不让它累死

论坛徽章:
0
发表于 2009-10-20 11:45 |显示全部楼层

回复 #34 yjcq 的帖子

/proc/sys/vm是kernel提供的一些针对内存管理的控制参数,参考kernel文档可以知道它们具体的用途。这样就可以筛选出vm.overcommit_memory、vm.overcommit_ratio、vm.max_map_count和分配进程虚拟地址空间有关(当然,需要对kernel的memory management有大概的了解)

具体测试时,/proc/pid/map显示了进程虚拟空间段的使用情况;strace跟踪malloc可以知道malloc是调用mmap分配大虚拟内存的

overcommit_memeory等于1、2时系统的行为,文档中说的很明白,分别是always overcommit、never overcommit。值为0时,则是通过测试分析得出的大致结论(source显示实际情况和描述的结论有稍许差别)

论坛徽章:
0
发表于 2009-10-20 14:27 |显示全部楼层

回复 #36 dragchan 的帖子

你看的什么kernel文档?

论坛徽章:
0
发表于 2009-10-20 16:12 |显示全部楼层

论坛徽章:
0
发表于 2009-10-20 22:02 |显示全部楼层
不懂lz问的意图在哪。  程序,没有sleep, 在每次时间片内调用的次数多了。 程序1,调用了usleep,一次时间片内才调用一次的malloc,操作系统要转换进程到就绪态,到时间再转回来,这个有时间消耗,还有usleep本身的精度问题。

论坛徽章:
0
发表于 2009-10-26 09:32 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP