有没有办法知道一个线程使用了多少内存?
Is there any way to know how much mem is used by a thread?
我正在维护一个程序,它在启动时使用600+MB内存,什么也不做!
我想知道每个线程使用多少内存,gdb可以做这个工作吗?
valgrind --tool=massif
是正确的解决方案。它会给你所有的信息,哪个线程在什么时间使用了多少内存。
我认为像IBM/Rational Purify或valgrind这样的内存分析工具可能是您所需要的。
同样,如果你的程序在启动时使用600Mb,你应该首先检查一下你的依赖库在加载后正在做什么。你可能还没有进入main()
,但他们可能正在创建一些重量级的全局静态对象,这些对象甚至在事情开始之前就被初始化了。
另一件要记住的事情是,每个线程都将为其堆栈分配大量内存。每个线程可能是1兆字节或更多,所以如果你自己创建600个线程,那么600Mb就已经用完了。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 在C++中使用cURL和多线程
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 使用 CommonAPI 编写服务器时C++服务器进程中创建了多少个线程?
- 了解索引以及块中有多少线程
- STD :: async的最大线程数量是多少,将异步创建和执行
- C++STL(ExecutionPolicy)算法如何确定要使用多少并行线程
- 我的CPU/OS可以处理多少个线程
- 可以(通过编译器)使用多少个线程来初始化全局对象(函数main之前)
- 我应该为IOCP创建多少个线程
- 我应该创建多少个线程
- 多线程 (openMP) - 多少个并行线程
- 循环可以在多线程C++程序中执行多少次
- shared_ptr线程安全的开销是多少?
- 一个C++应用程序可以创建多少个线程
- 可以创建的最大线程数是多少?在多线程时需要考虑系统配置吗?
- 线程间异常.我需要多少std::exception_ptr和同步?
- 是否有一种方法可以从DLL中告诉主进程中有多少正在进行的线程?
- 有没有办法知道一个线程使用了多少内存?