当前位置: 技术问答>linux和unix
高手请进:linux 多线程占用内存问题
来源: 互联网 发布时间:2015-11-28
本文导语: 线程的概念应该是可以共享进程内存,从而节省内存,但我做了试验,发现并非如此。我的进程申请内存64m,创建了两个线程,分别申请内存64m 128m,结果用ps -aux 查看内存消耗,发现进程变成了两个(可以解释为...
线程的概念应该是可以共享进程内存,从而节省内存,但我做了试验,发现并非如此。我的进程申请内存64m,创建了两个线程,分别申请内存64m 128m,结果用ps -aux 查看内存消耗,发现进程变成了两个(可以解释为一个为主进程,一个为管理线程),两个消耗内存都是282m,也就是说总共消耗内存564m,请教各位高手,能不能帮忙解释一下,为什么会出现这种情况?两个进程的内存消耗为什么会一样?到底是如何分配的?先谢谢各位了!急盼!!
|
啊哈,你理解错了,“两个消耗内存都是282m”是不错,可是你没弄清一点,它们消耗的内存都是同一块。
|
从你描述的现象来看你应该使用的是2.6以下的kernel,那么你使用的应该是linuxthread。线程之间共享堆空间,因此他们也共享brk()指针,所以显示的内存消耗量相同。但这并不代表着他们各自都占了这么多内存。另外linuxthread中没有管理线程的概念,他们与kernel线程之间是一对一的关系。