如何在Linux中获取每个基于线程的进程内存消耗? 我知道我们可以使用/ proc / pid / task / tid / statm,但这对我的情况没有帮助。 所有线程都显示相同的值,与PID的statm相同。
我们可以做valgrind,但我不是在寻找任何无效的读/写或泄漏。 Valgrind不会告诉我任何线程级信息。
还有其他建议吗?
编辑: 如何分析我的代码?在哪个功能/行号等分配了多少内存?
答案 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匹配
对于