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
}

using MALLOCTYPE=buckets 私の観察は、常駐セットサイズ(実メモリ)であり、プロセスのデータセクションサイズは継続的に増加しています。これは、コマンド ps で確認され ます。プロセスの topas に表示されるPID pg sp の値は、ゆっくりと増加しています。

誰かがこの行動を正当化できますか。

4

1 に答える 1

1

free では、メモリは AIX OS に解放されませんが、再利用のために予約されます。MALLOCOPTIONS=disclaim を使用すると、free によってメモリが AIX OS に解放され、メモリ使用率が増加しません。しかし、MALLOCOPTIONS=disclaim を使用すると、CPU 使用率はほぼ 2 ~ 3 倍になります。

于 2013-01-11T16:20:07.980 に答える