免费注册 查看新帖 |

Chinaunix

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

多线程程序的虚拟内存使用问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-31 16:43 |只看该作者 |倒序浏览
1)在程序中使用pthread_attr_setstacksize将线程stack设置为4096K.
运行时查看进程vm(虚拟内存),rss(驻留物理内存)如下
3$  ps -eo "pid,rss,vsz" | grep -E '\b3153\b'
3153 160076 3133412
通过ulimit查看系统默认stack size为10240Kb
$ulimit -a
stack size              (kbytes, -s) 10240

2)同样的程序,同样的线程数目,但是使用ulimit -s 4096,程序运行时的vm却减少了将近一半
3$  ps -eo "pid,rss,vsz" | grep -E '\b25570\b'
25570 151992 1529144

$ulimit -a
stack size              (kbytes, -s) 4096


问题是:
程序已经通过pthread_attr_setstacksize将stack size设置成为4096K,为什么ulimit设置的系统默认stack size会对运行时的整个virtual memory有如此大的影响?
根据我的理解,1)和2)无论是vm还是rss大小都应该一致,而不是1)的vm几乎是2)的一倍?

[ 本帖最后由 muare 于 2009-7-31 16:56 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP