原始和引用变量的内存分配

type name;

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

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

我的问题是,何时进行内存分配。 在编译时或运行时? 原始变量和引用变量都一样吗?

运行。

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

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

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

内存分配在运行时发生,并且引用类型和基元都需要存储分配。 更准确地说,我无法理解它memory allocation in compile time是什么意思(对于java )。