有人用下面提到的场景好心地消除了我对 Java 内存管理的疑虑。当我们为原始数据类型变量赋值时,该值将存储在堆栈内存中。如果我理解错了这个概念,请纠正我。就像下面提到的分配非原始数据类型的值时内存将如何分配一样。Integer a = 3;会在堆栈或堆中创建内存吗?
1 回答
GCT1015
TA贡献1827条经验 获得超4个赞
该变量a
将位于堆内存或堆栈内存中,具体取决于它是什么类型的变量:
方法或构造函数局部变量(包括参数)- 在堆栈上
实例变量(又名属性或字段)- 在堆上
类变量 - 在堆上。
(为了完整起见,有几个模糊的情况,其中 lambda 或内部类引用封闭范围中的有效最终局部变量。在这些情况下,原始变量内容的副本将存储在堆中。)
Integer
表示装箱值的对象将3
在堆上。
对该对象的引用的副本存储在变量中a
的任何位置。在 JVM 的其他地方可能有该引用的其他副本。
添加回答
举报
0/150
提交
取消