我正在尝试调查大型多线程服务器的内存使用情况。根据mallinfo(),我得到arena=350M
和fordblks=290M
,这表明大多数空间实际上是在malloc()
内部浪费的。 malloc_info()
函数提供了一个很好的XML数据结构,该结构应该是不言自明的。不过,有人可以向我解释吗
0
是否特殊?是所有其他人居住的那个主要竞技场吗? <size from=.../>
块是否已分配,空闲/可用或同时分配? <system>
元素?使用mmap()/sbrk()
分配的内存? <aspace>
元素?有效内存? <aspace type="mprotect" .../>
呢? 刚开始时,我希望能够绘制出应用程序分配的总内存,即根据
malloc()
的想法分配的所有尚未释放的内存。 最佳答案
大量的虚拟内存使用不一定是问题。默认的malloc实现将为每个线程分配大量存储,以避免争用问题。这种情况尤其发生在当今非常普遍的64位实现上。除非您遇到驻留内存的大小问题或遇到分页问题,否则您不必担心。
Kevin Grigorenko写了许多博客文章,它们处理与WebSphere有关的内存使用情况,但是它们适用于任何大型多线程进程。
关于linux - GNU malloc_info(): get really allocated memory?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34292457/