默认情况下,当malloc或者new操作一次性分配大于等于128KB的内存时,会使用mmap来进行,而在小于128KB时,使用的是brk的方式
小于128KB时的测试截图如下:
大于128KB时的测试截图如下:
128KB是可以调节的,如下,重新使用brk的方式进行内存分配。
测试代码如下:
#include <iostream>
#include <unistd.h>
#include <sys/types.h>
#include <malloc.h>
int main()
{
std::cout << getpid() << std::endl;
mallopt(M_MMAP_THRESHOLD,129*1024);
while(1)
{
char* c = new char[1024*128];
usleep(1000);
}
return 0;
}