VSZ和RSS在AIX上不断增加

时间:2015-07-27 09:52:48

标签: c++

在AIX上运行我的应用程序时,我看到了异常的内存使用模式...

我已经为malloc创建了一个简单的程序,并且可以自由地复制同样的问题。

int main()
{
    int *ptr_one;

    // enter value as 0.
    // I wanted few secs fetch the PID of this statndlone process
    // and run 'ps -p <PID> -o "vsz rssize"'
    long a;
    scanf("%ld", &a);

    for(;;)
    {
        if(a < 10000000) a = a + 100;

        ptr_one = (int *)malloc(sizeof(int)*a);

        if (ptr_one == 0){
        printf("ERROR: Out of memory\n");
        return 1;
        }
        *ptr_one = 25;
        printf("%d\n", *ptr_one);

        free(ptr_one);
    }
    return 0;
}

我已使用以下命令

捕获了该程序的内存使用情况
ps -p $1 -o "vsz rssize" | tail -1  >> out.txt

该图表显示内存不断增长而未释放。 这是否是泄漏的迹象,或者这是AIX上的正常内存行为?

1 个答案:

答案 0 :(得分:0)

完全正确的是,进程的内存使用量不会减少:虽然malloc可以为进程请求额外的内存,但free永远不会将其返回给系统。相反,释放内存将在未来malloc次调用中重复使用。