原始和引用变量的内存分配
type name;
对于引用类型,这会通知编译器您将使用name来引用类型为type的数据。 对于原始变量,此声明还为变量保留适当的内存量。
以上是我从oracle docs java教程中读到的确切行。
我的问题是,何时进行内存分配。 在编译时或运行时? 原始变量和引用变量都一样吗?
运行。
由于Java是由VM
执行的,因此在编译时分配内存没有意义。
“ 局部变量 ”(如函数内的函数参数或变量)仅在堆栈上“ 分配 ”(原始值或引用)。 始终在堆上创建对象。
但是:有关内存管理 (分配,释放,垃圾收集)的所有内容都依赖于JVM
实现,并且只在运行时发生(当然除了原始和字符串常量 )。
内存分配在运行时发生,并且引用类型和基元都需要存储分配。 更准确地说,我无法理解它memory allocation in compile time
是什么意思(对于java
)。