有没有办法知道线程使用了多少内存?

时间:2011-04-07 03:06:57

标签: c++ linux multithreading memory gdb

我正在维护一个程序,它在启动时使用600 + MB内存,什么都不做!

我想知道每个线程使用了多少内存,gdb可以做这个工作吗?

2 个答案:

答案 0 :(得分:2)

我认为像IBM/Rational Purifyvalgrind这样的内存分析工具可能就是您所需要的。

此外,如果您的程序在启动时使用600Mb,则应首先检查您的依赖库在加载后正在执行的操作。您可能还没有输入main()但他们可能正在创建一些重量级的全局静态对象,这些对象在事情开始之前就被初始化了。

要记住的另一件事是每个线程将为其堆栈分配大量内存。它可能是每个线程一兆字节或更多,所以如果你自己创建600个线程,那么600Mb就已经消失了。

答案 1 :(得分:2)

valgrind --tool=massif是正确的解决方案。它将为您提供哪些线程在什么时间点使用多少内存的所有信息。