【问题标题】:Correlation between malloc_stats and /proc/pid/statmalloc_stats 和 /proc/pid/stat 之间的相关性
【发布时间】:2013-02-09 08:11:26
【问题描述】:

我正在开发嵌入式 linux 系统。我了解malloc_stats/proc/pid/stats 提供的信息。我想知道 malloc_stats 打印的信息与 /proc/stats 提供的内存使用信息有什么关系。 背景是我想检测我的应用程序中的每个线程以检查内存泄漏。Malloc_stats 打印有用的信息,但不能以编程方式使用。/proc//task/ 有有用的信息,但我无法将其与使用的堆内存相关联当前线程。

【问题讨论】:

    标签: linux memory-leaks embedded malloc


    【解决方案1】:

    您是否忽略了mallinfo() 库函数?这是malloc_stats() 获取信息的地方。

    直接回答问题:/proc 中的数据将反映进程的总内存使用情况,包括内存分配和空闲内存之间的松弛空间,以及未通过@987654325 分配的正在使用的内存@ (例如,堆栈、全局/静态变量等)。 malloc_stats() 会将其分解为实际分配的内容和未分配的内容。

    【讨论】:

    • 谢谢。我的主要目的是获取基于每个线程的信息。我了解获得线程明智分解的最佳方法是使用 /proc/pid/task/tid/stat。但是根据您的回复,我了解有关驻留集大小 (rss) 的信息不反映线程分配的实际动态内存量和分配的总大小。我的理解是否正确
    • 内存不是按线程跟踪的。它属于进程,而不仅仅是一个线程。
    • 线程的定义是没有自己的内存空间,而是与同一个进程的所有线程共享内存空间。所以说线程分配的内存是没有意义的。它是由整个进程分配的内存(与哪个特定线程执行malloc库调用或malloc调用的mmap系统调用无关)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多