Linux malloc_stats和/proc/pid/stat之间的相关性
我在一个嵌入式linux系统上工作。我了解你提供的信息。我想知道malloc_stats打印的信息与/proc/stats提供的内存使用信息之间的关系。 背景是我想检测应用程序中的每个线程以检查内存泄漏。Malloc_stats打印有用的信息,但不能以编程方式使用。/proc//task/有有用的信息,但我无法将其与当前线程使用的堆内存相关联。您是否忽略了库函数?它是Linux malloc_stats和/proc/pid/stat之间的相关性,linux,memory-leaks,embedded,malloc,Linux,Memory Leaks,Embedded,Malloc,我在一个嵌入式linux系统上工作。我了解你提供的信息。我想知道malloc_stats打印的信息与/proc/stats提供的内存使用信息之间的关系。 背景是我想检测应用程序中的每个线程以检查内存泄漏。Malloc_stats打印有用的信息,但不能以编程方式使用。/proc//task/有有用的信息,但我无法将其与当前线程使用的堆内存相关联。您是否忽略了库函数?它是malloc\u stats()获取信息的地方 直接回答这个问题:/proc中的数据将反映进程的总内存使用量,包括内存分配和空闲内
malloc\u stats()
获取信息的地方
直接回答这个问题:
/proc
中的数据将反映进程的总内存使用量,包括内存分配和空闲内存之间的空闲空间,以及根本没有通过malloc()
分配的正在使用的内存(例如堆栈、全局/静态变量等)<代码>malloc_stats()会将其分解为实际分配的和未分配的。谢谢。我的主要目的是获取每个线程的信息。我知道获得线程分解的最佳方法是使用/proc/pid/task/tid/stat。但是根据您的回复,我了解关于常驻集大小(rss)的信息不反映线程分配的动态内存的实际数量和分配的总大小。据我所知,内存没有按每个线程进行跟踪。它属于进程,而不仅仅是一个线程。根据线程的定义,它没有自己的内存空间,而是与同一进程的所有线程共享内存空间。所以说线程分配的内存是没有意义的。它是由整个进程分配的内存(与哪个特定线程调用了malloc
库或malloc
调用的mmap
系统调用无关)。