关于Valgrind Massif测量多线程程序总栈内存的疑问
Valgrind Massif
mem_stacks_B 数值含义解答 当你使用Massif并添加--stacks=yes参数时,输出中的mem_stacks_B=4024代表进程内所有线程栈内存的已使用总量,包含:
- 主线程的栈使用
- 你的代码创建的所有线程的栈使用
- 第三方共享库创建的所有线程的栈使用
补充说明
Linux系统中每个线程都拥有独立的栈空间,Massif启用--stacks=yes后,会追踪进程内所有线程的栈内存分配情况,统计的是所有线程栈中实际被使用的内存字节数(而非栈的预留大小)。
你可以通过简单验证来确认:手动创建几个线程,每个线程在栈上分配固定大小的数组(比如每个线程分配1KB的栈变量),重新运行Massif后,mem_stacks_B的数值会对应增加相应的字节数,这能直接证明该值是所有栈的总和。
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

