Linux:如何测量进程中线程的内存使用率
Linux: How to measure memory usage for a thread within process?
我想测量进程中每个线程的内存使用量。是否可以?我正在尝试找出哪些线程泄漏内存。
编辑1。用于泄漏过程的PMAP显示〜600分配[anon]
...
63b00000 772K rw--- [ anon ]
63bc1000 252K ----- [ anon ]
63c00000 772K rw--- [ anon ]
63cc1000 252K ----- [ anon ]
63d00000 772K rw--- [ anon ]
...
关于下一步该怎么做的建议?
编辑2。只有虚拟内存泄漏,例如物理内存使用稳定。
否这是不可能的,因为内存不是附加到线程的,而是将内存附加到该过程上。线程与内存的某些部分之间没有链接。
您似乎需要的是一个探测器,这将指向分配点。其中之一(在过去十年中不使用它)是理性净化。
您通常无法识别线程的内存使用情况,因为内存所有权可以在线程之间自由移动。内核映射表将向您显示整个过程的用法,即分配给所有线程的内存。
线程编程是 hard 。除非您确实需要在线程之间自由共享指针和内存(这是一种相当讨厌的代码气味,否则如果您将程序重新处理为通过IPC通信的一群过程,则可能会更容易调试,这也会迫使您考虑考虑哪个国家需要共享。作为奖励,如果泄漏过程被证明是一个相对短暂的过程,则记忆将返回到exit()
上的系统,而无需找到和修补泄漏。
相关文章:
- 异常属于C++中的线程还是进程
- 将更高的优先级设置为 boost::asio 线程处理进程
- 从不同进程中的另一个线程挂起/恢复线程或进程
- 多线程:线程或进程.h - C++
- BOOST线程:线程还是进程
- 将进程的执行从线程1转移到线程2
- std::async 如果线程是从 DLL 创建的,则会阻止进程退出?
- 优化吞吐量:多线程与多进程
- 多个线程/进程是否可以在不同步的情况下同时从/写入文件的非重叠区域?
- 使用 CommonAPI 编写服务器时C++服务器进程中创建了多少个线程?
- 睡眠线程或进程的指令是否在线程/进程休眠时继续执行?
- 多线程中的 std::basicstring 的运行时分段错误C++点燃进程
- 在 Linux 中从单独的单线程进程生成多线程进程时出现问题
- 当其中一个线程在 C++ 中使用 pthread 被杀死时,我如何保持进程的存活
- 异步是否总是在C++中使用另一个线程/内核/进程
- boost消息队列线程安全和进程安全吗?
- 当进程结束时,处于Sleep()中间的线程会发生什么
- 确定进程的输入线程 ID
- rusage的进程/线程的Cpu时间不可能
- 获取c++ Builder中执行进程/线程的ID