3
我使用MALLOCTYPE在AIX 6.1AIX進程內存使用malloc免費通話中環
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
}
運行此代碼=桶 我的觀察是 駐留集大小(實際內存)和數據部分尺寸增加過程不斷增加。這是通過命令ps v PID 檢查pg sp值顯示在topas中的過程正在緩慢增加。
有人可以證明這種行爲。
如果您在一段時間內沒有得到答案,請查看ittoolbox.com上的AIX區域。那裏有很多AIX專家。祝你好運。 – shellter
什麼是您的平臺上的RAND_MAX?在我的系統上是2^31-1(非AIX,但是),這意味着'a * a'對於內存分配可能會非常大。無論如何,在我見過的大多數C庫實現中,只是'free()'內存塊通常不會縮小進程的虛擬內存大小,它只是將該塊返回給'malloc()''free()分配器。所以我希望你的堆永遠不會小於你迄今爲止所做的最大配額。 – twalberg
int max在我的機器上是2^31-1。我有16 GB的RAM和500 MB的頁面空間。代碼中的內存分配請求範圍爲1 MB到1000 MB。數據段大小從400K增加。 – PankajM