线程级内存消耗过程

时间:2009-10-14 16:59:33

标签: c linux multithreading pthreads procfs

如何在Linux中获取每个基于线程的进程内存消耗? 我知道我们可以使用/ proc / pid / task / tid / statm,但这对我的情况没有帮助。 所有线程都显示相同的值,与PID的statm相同。

我们可以做valgrind,但我不是在寻找任何无效的读/写或泄漏。 Valgrind不会告诉我任何线程级信息。

还有其他建议吗?

编辑: 如何分析我的代码?在哪个功能/行号等分配了多少内存?

2 个答案:

答案 0 :(得分:2)

所有线程共享相同的地址空间并使用相同的堆,因此除了堆栈之外,它们都应显示相同的内存使用情况。

答案 1 :(得分:0)

Linux中有一个选项可以查看cpu和内存的线程级别用法

您可以将top选项与-H选项和-p

一起使用
top -H -p<PID>

命令将使用以下标题列出结果,在这种情况下,您应该将PID读为TID(线程ID)。

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND`

在java进程的情况下,很明显如下。如果您创建进程的线程转储并将线程ID转换为十进制,则可以与top -H -p <PID>的输出中列出的TID匹配

对于