【发布时间】:2018-10-02 02:02:59
【问题描述】:
用 C 编写的多线程进程几乎耗尽了所有系统内存。为了找出消耗大部分内存的线程,我使用gcore [pid] 创建了一个核心文件来检查每个线程的内存使用情况,但我找不到这样做的方法。
ps -eLFlm 和带有 -H 选项的 top 命令显示总内存消耗,但不是每个线程。
有什么有用的提示可以解决这个问题吗?
操作系统:Centos6
【问题讨论】:
-
试试
$ ps -T -p <pid> -
你确定这个说法找出消耗内存的线程?在你的进程中确实有多个线程产生。
-
ps -T -p
不显示内存信息。它显示线程的PID。我要检查的进程有 18 个线程,包括 LWP。 -
你的程序在做什么?在耗尽系统内存之前运行多长时间?它有多大(数十万行 C)?你在使用什么库?所有这些细节都很重要,所以你最好edit你的问题并提供一些动机和背景!
标签: multithreading memory ps