【发布时间】:2012-09-05 16:00:09
【问题描述】:
我对 java 中的内存分配是发生在运行时还是编译时感到困惑。
例如:
class Test{
int a;
public Test(){
a=10;
}
};
// somewhere else
Test t = new Test();
a 是在运行时还是在编译时分配的?如果在编译时,java怎么可能在直接获取已编译的.class文件的VM上运行?
还有:
a何时被赋值为10?引用变量
t如何工作?
谢谢。
【问题讨论】:
-
这个例子不能编译(赋值应该和声明合并)。
-
您可能会混淆可在编译时确定的内存分配大小与直到运行时才知道的内存分配。
-
在程序运行之前,引用的大小是未知的。 64 位 JVM 可以使用 32 位或 64 位引用。
-
是的,我可能知道两者之间有什么区别。任何示例都会有很大帮助。在编译时确定大小如何帮助因为 JVM 分配内存并且文件在其他地方编译。
标签: java allocation