我正在尝试调查大型多线程服务器的内存使用情况。根据mallinfo(),我得到arena=350Mfordblks=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/

    10-10 17:38