猿问

Java会分配什么样的内存?

有人用下面提到的场景好心地消除了我对 Java 内存管理的疑虑。

当我们为原始数据类型变量赋值时,该值将存储在堆栈内存中。如果我理解错了这个概念,请纠正我。

就像下面提到的分配非原始数据类型的值时内存将如何分配一样。

Integer a = 3;

会在堆栈或堆中创建内存吗?


慕斯709654
浏览 124回答 1
1回答

GCT1015

该变量a将位于堆内存或堆栈内存中,具体取决于它是什么类型的变量:方法或构造函数局部变量(包括参数)- 在堆栈上实例变量(又名属性或字段)- 在堆上类变量 - 在堆上。(为了完整起见,有几个模糊的情况,其中 lambda 或内部类引用封闭范围中的有效最终局部变量。在这些情况下,原始变量内容的副本将存储在堆中。)Integer表示装箱值的对象将3在堆上。对该对象的引用的副本存储在变量中a的任何位置。在 JVM 的其他地方可能有该引用的其他副本。
随时随地看视频慕课网APP

相关分类

Java
我要回答