0

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

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

还有其他建议吗?

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

4

2 回答 2

3

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

于 2009-10-14T17:01:31.633 回答
0

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

您可以使用top带有选项的命令-H-p

top -H -p<PID>

命令将列出带有以下标题的结果,PID在这种情况下您应该读为 TID(Thread id)。

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

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

为了

于 2016-07-14T19:17:10.560 回答