免费注册 查看新帖 |

Chinaunix

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

请问Linux下线程开销为什么这么大?一个线程要占用近10M内存 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-21 18:06 |只看该作者 |倒序浏览
32位机器,当创建到200多个线程的时候,虚拟内存占用达到3G,此时再也不能创建新线程了。

有没有系统设置可以减小线程开销?Windows下似乎线程基本不占内存。

测试用的线程什么也没做,只是sleep。

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
2 [报告]
发表于 2011-07-21 18:17 |只看该作者
默认一个线程最多8M数据吧。

论坛徽章:
0
3 [报告]
发表于 2011-07-21 18:17 |只看该作者
创建线程给它分配栈的原因吧。

论坛徽章:
0
4 [报告]
发表于 2011-07-21 18:21 |只看该作者
使用QT4.7.2测试的,创建线程使用的QThread,代码很简单,从QThread继承,在run虚函数里面写的
while (true)
{
sleep(100);
}

然后开始创建这个QThread。

没有使用其它配置,默认设置运行的。

论坛徽章:
0
5 [报告]
发表于 2011-07-21 18:48 |只看该作者
默认8M的话,请问在哪儿调整啊?把它调小点就好了。

论坛徽章:
0
6 [报告]
发表于 2011-07-21 19:23 |只看该作者
用ulimit -s 1024就好了,默认是8196,所以每次接近10M。

不知道默认为什么这么大,据说Solaris才几百k。

论坛徽章:
0
7 [报告]
发表于 2011-07-22 00:16 |只看该作者
不知道你这个虚拟内存是个什么内存

论坛徽章:
0
8 [报告]
发表于 2011-07-22 10:12 |只看该作者
不知道你这个虚拟内存是个什么内存
sparkzh 发表于 2011-07-22 00:16


也可能你们不叫虚拟内存吧,但Fedora中文翻译为虚拟内存,就是top命令里面的VIRT

论坛徽章:
0
9 [报告]
发表于 2011-07-24 10:11 |只看该作者
用pthread_attr_setstacksize这个函数,可以设置stack的大小,自己去man下怎么用吧。呵呵。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP