何时为函数中的局部变量分配内存?

时间:2013-09-14 05:28:23

标签: java

我知道为函数和static成员分配的内存只执行一次,每次创建新对象时,类变量都会被赋予新的内存空间。

在以下问题中使用new运算符后,我将为类变量获取8个字节。但是,何时分配了int c的内存?在编译期间?

class A
{
    int a,b;

    void show()
    {
        int c;
    }

    public static void main(String...s)
    {
        new A().show();
    }
}

2 个答案:

答案 0 :(得分:3)

方法调用和局部变量存储在堆栈中。对象(包含实例变量)存储在堆上。所以使用:

创建的对象
new A()

将存储在堆上,并且show方法在调用方法时将创建存储在堆栈中的局部变量c

只需查看此图片,即可了解有关Java中堆栈和堆内存管理的更多信息:

enter image description here

答案 1 :(得分:2)

每次在堆栈上调用函数时,都会分配函数局部变量的内存。