我正在维护一个程序,它在启动时使用600 + MB内存,什么都不做!
我想知道每个线程使用了多少内存,gdb可以做这个工作吗?
答案 0 :(得分:2)
我认为像IBM/Rational Purify或valgrind这样的内存分析工具可能就是您所需要的。
此外,如果您的程序在启动时使用600Mb,则应首先检查您的依赖库在加载后正在执行的操作。您可能还没有输入main()
但他们可能正在创建一些重量级的全局静态对象,这些对象在事情开始之前就被初始化了。
要记住的另一件事是每个线程将为其堆栈分配大量内存。它可能是每个线程一兆字节或更多,所以如果你自己创建600个线程,那么600Mb就已经消失了。
答案 1 :(得分:2)
valgrind --tool=massif
是正确的解决方案。它将为您提供哪些线程在什么时间点使用多少内存的所有信息。