默認情況下,當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;
}