3

我在 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=buckets 我的观察是常驻集大小(实际内存)和进程的数据段大小不断增加。这是通过命令 ps v PID pg sp 值在 topas 中显示的进程缓慢增加的检查。

有人可以证明这种行为是正当的。

4

1 回答 1

1

在空闲时,内存不会释放给 AIX 操作系统,而是保留以供重用。使用 MALLOCOPTIONS=disclaim,free 将内存释放回 AIX 操作系统,并且它们不会增加内存利用率。但是使用 MALLOCOPTIONS=disclaim,CPU 利用率几乎提高了 2-3 倍。

于 2013-01-11T16:20:07.980 回答