1

type name;

对于引用类型,这会通知编译器您将使用 name 来引用类型为 type 的数据。对于原始变量,此声明还为变量保留了适当的内存量。

以上是我从 oracle docs java 教程中读到的确切内容。

我的问题是,什么时候进行内存分配。在编译时或运行时?原始变量和参考变量是否相同?

4

2 回答 2

4

运行。

由于Java由 a 执行,因此在编译时分配内存VM没有意义。

像函数参数函数内的变量一样的“局部变量”仅在堆栈上“分配”(原始值或引用)。对象总是堆上创建的。

但是:关于内存管理的一切(分配、释放、垃圾收集)都JVM依赖于实现,并且运行时发生(当然除了原始常量和字符串常量)。

于 2012-08-21T08:40:53.960 回答
2

内存分配发生在运行时,引用类型和原语都需要存储分配。更准确地说,我不明白它是什么意思memory allocation in compile time(对于java)。

于 2012-08-21T08:39:45.740 回答