我正在尝试调查大型多线程服务器的内存使用情况.根据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相关的内存使用情况,但它们适用于任何大型多线程进程.