我知道为函数和static
成员分配的内存只执行一次,每次创建新对象时,类变量都会被赋予新的内存空间。
在以下问题中使用new
运算符后,我将为类变量获取8个字节。但是,何时分配了int c
的内存?在编译期间?
class A
{
int a,b;
void show()
{
int c;
}
public static void main(String...s)
{
new A().show();
}
}
答案 0 :(得分:3)
方法调用和局部变量存储在堆栈中。对象(包含实例变量)存储在堆上。所以使用:
创建的对象new A()
将存储在堆上,并且show
方法在调用方法时将创建存储在堆栈中的局部变量c
。
只需查看此图片,即可了解有关Java中堆栈和堆内存管理的更多信息:
答案 1 :(得分:2)
每次在堆栈上调用函数时,都会分配函数局部变量的内存。