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

Is there any way to know how much mem is used by a thread?

本文关键字:线程 多少 内存 一个 有没有      更新时间:2023-10-16

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

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

valgrind --tool=massif是正确的解决方案。它会给你所有的信息,哪个线程在什么时间使用了多少内存。

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

同样,如果你的程序在启动时使用600Mb,你应该首先检查一下你的依赖库在加载后正在做什么。你可能还没有进入main(),但他们可能正在创建一些重量级的全局静态对象,这些对象甚至在事情开始之前就被初始化了。

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