我正在尝试调查大型多线程服务器的内存使用情况。根据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;
}
的想法,绘制应用程序分配的总内存,即分配但尚未释放的所有内容。
答案 0 :(得分:1)
大量虚拟内存使用不一定是个问题。默认的malloc实现将为每个线程分配大量存储空间,以避免争用问题。这种情况尤其发生在64位实现上,这在当今很常见。除非您遇到驻留内存大小问题或者出现分页问题,否则您不必担心。
Kevin Grigorenko撰写了许多博客文章,介绍了与WebSphere相关的内存使用情况,但它们适用于任何大型多线程进程。