我在AIX 6.1上运行此代码
while(true)
{
int a = rand(); //generate a random integer value
void* test = malloc(a*a); //allocate large chunk of memory block
usleep(3000000); //sleep for 3 sec
free(test); // release memory block
}
使用MALLOCTYPE =存储桶 我的观察是 进程的驻留集大小(实际内存)和数据段大小不断增加。这可以通过命令ps v PID 进行检查 在topas中显示的pg sp值正在缓慢增加。
有人可以证明这种行为。
答案 0 :(得分:1)
在free上,内存不会发布到AIX OS,但保留用于重用。使用MALLOCOPTIONS = disclaim,可以将内存释放回AIX操作系统,并且内存利用率不会增加。但是,由于MALLOCOPTIONS = disclaim,CPU利用率几乎是后者的2-3倍。