0

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

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

class A
{
    int a,b;

    void show()
    {
        int c;
    }

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

2 回答 2

3

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

new A()

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

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

在此处输入图像描述

于 2013-09-14T05:40:11.307 回答
2

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

于 2013-09-14T05:32:42.810 回答