Java 原语和引用变量的内存分配

Java 原语和引用变量的内存分配,java,Java,类型名称 对于引用类型,这会通知编译器您将使用name来引用类型为type的数据。对于基本变量,此声明还为变量保留适当的内存量。 以上是我从oracle docs java教程中读到的内容 我的问题是,什么时候进行内存分配。在编译时或运行时?? 原语和引用变量都是这样吗?内存分配发生在运行时,引用类型和原语都需要存储分配。更准确地说,我无法理解编译时内存分配(对于java)意味着什么。内存分配发生在运行时,引用类型和原语都需要存储分配。更准确地说,我无法理解编译时内存分配(对于java)意味着什

类型名称

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

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

我的问题是,什么时候进行内存分配。在编译时或运行时??
原语和引用变量都是这样吗?

内存分配发生在运行时,引用类型和原语都需要存储分配。更准确地说,我无法理解编译时
内存分配(对于
java
)意味着什么。

内存分配发生在运行时,引用类型和原语都需要存储分配。更准确地说,我无法理解编译时内存分配(对于
java
)意味着什么

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

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

但是:与内存管理(分配、解除分配、垃圾收集)有关的一切都取决于
JVM
实现,并且只在运行时发生(当然,除了原语和字符串常量)。

运行时

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

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


但是:与内存管理(分配、解除分配、垃圾收集)有关的一切都取决于
JVM
实现,并且只在运行时发生(当然除了原语和字符串常量)。

和文本。声明为“”的字符串将进入permgen。所有常量都将在编译时进入Java类文件常量池,并在类加载时进入permgen。(无论是常量字符串表达式还是可以表示为常量数值的任何内容)先生,为了更好的解释,请为您介绍。@DanMatthews Grout我喜欢
Upboots
,今天的新词;)那个么类的静态字段呢?当doe的内存分配发生在@nee和literals时。声明为“”的字符串将进入permgen。所有常量都将在编译时进入Java类文件常量池,并在类加载时进入permgen。(无论是常量字符串表达式还是可以表示为常量数值的任何内容)先生,为了更好的解释,请为您介绍。@DanMatthews Grout我喜欢
Upboots
,今天的新词;)那个么类的静态字段呢。当doe的内存分配发生@NeetAny时,分配发生在程序运行时。任何分配都发生在程序运行时。