【发布时间】:2012-08-10 13:36:29
【问题描述】:
计划:
我为大量数据创建了一个 C++ 计算程序,它可以在 1 个或多个线程上运行。 (通过配置文件)
程序环境如下:C++、OpenMp、Redhat-x64、malloc/free
Linux 上的结果:
- 当我在 1 个线程上运行它时,进程大小为 177 MB。
- 当我在 2 个线程上运行它时,进程大小为 317 MB。
- 当我在 4 个线程上运行它时,进程大小为 600 MB。
Windows 上的结果:
- 无论使用多少线程,进程大小仍然相同,为 110MB。
问题:
为什么在 Linux 上使用更多线程时内存消耗会增加?
【问题讨论】:
-
哪个内存,虚拟的,驻留的,共享的?
-
每个线程都有自己的栈?
-
我只是使用标准的c++ malloc分配器,我不知道之后linux是如何工作的。
-
这是真的吗,或者您是否以某种方式看到每个线程报告的内存相同,因为它们都共享一个内存空间,因此将实际内存需求乘以线程数?你用什么来确定大小?
标签: c++ linux multithreading memory openmp