2013-02-09 85 views
0

我正在使用嵌入式Linux系统。我明白什么信息malloc_stats/proc/pid/stats提供。我想知道malloc_stats打印的信息与/ proc/stats提供的内存使用信息有什么关系。 背景是我想在我的应用程序中检测每个线程以检查内存泄漏.Malloc_stats打印有用的信息,但无法以编程方式使用./proc//task/具有有用的信息,但我无法将其与使用的堆内存相关联由当前线程。malloc_stats和/ proc/pid/stat之间的相关性

回答

1

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

直接回答这个问题:在/proc的数据反映的是过程的总内存使用情况,包括内存分配和释放内存之间的剩余空间,以及记忆体的角色正在使用哪一个不是通过malloc()分配在所有(例如,堆栈,全局/静态变量等)。 malloc_stats()将分解成实际分配的内容和不分配的内容。

+0

谢谢。我的主要目的是在每个线程的基础上获取信息。我明白了解决线程故障的最佳方式是使用/proc/pid/task/tid/stat.However根据您的回复我了解驻留集大小(rss)的相关信息并不反映线程分配的动态内存的实际数量和总分配的大小。是我的理解正确 – Badri 2013-02-09 08:59:27

+0

内存不在每个线程的基础上进行跟踪。它属于过程,而不仅仅是一个线程。 – duskwuff 2013-02-09 16:34:10

+0

通过定义一个线程,它没有自己的内存空间,但与同一进程的所有线程共享内存空间。所以说由线程分配的内存是无意义的。它是由* whole *进程分配的内存(并且'malloc'库调用的是哪个特定的线程,或'malloc'调用的'mmap'系统调用是无关紧要的)。 – 2013-02-09 19:45:45