GNU malloc_info():获得真正分配的内存?

时间:2015-12-15 15:00:22

标签: linux memory-management malloc

我正在尝试调查大型多线程服务器的内存使用情况。根据mallinfo(),我得到malloc()malloc_info(),这表明大部分空间实际上都浪费在0内。 <size from=.../>函数提供了一个很好的XML数据结构,应该是不言自明的。不过,有人可以向我解释

  • <system>特别吗?是所有其他人居住的主要竞技场吗?
  • 分配mmap()/sbrk()块,免费/可用或两者兼而有之?
  • <aspace>元素是什么?使用<aspace type="mprotect" .../>分配的内存?
  • malloc()元素是什么?可用内存?
  • #include <iostream> #include <cmath> using namespace std; int Find_entry(int data[], int n, int x) { int a = (n/2); int b = n; int tmp = 0; while (x != data[a]) { if (x > data[a]) { tmp = a; a = (b+a)/2; b = b; } if (x < data[a]) { a = tmp; b = a; } } return a; } 怎么样?

只是一开始,我希望能够根据int main() { int n = 6; int x = 12; int array1[] = {3,12,5,9,7,11}; cout << "The entry " << x << " is found at position " << 1+Find_entry(array1, n, x) << endl; return 0; } 的想法,绘制应用程序分配的总内存,即分配但尚未释放的所有内容。

1 个答案:

答案 0 :(得分:1)

大量虚拟内存使用不一定是个问题。默认的malloc实现将为每个线程分配大量存储空间,以避免争用问题。这种情况尤其发生在64位实现上,这在当今很常见。除非您遇到驻留内存大小问题或者出现分页问题,​​否则您不必担心。

Kevin Grigorenko撰写了许多博客文章,介绍了与WebSphere相关的内存使用情况,但它们适用于任何大型多线程进程。