有人用下面提到的場景好心地消除了我對 Java 內存管理的疑慮。當我們為原始數據類型變量賦值時,該值將存儲在堆棧內存中。如果我理解錯了這個概念,請糾正我。就像下面提到的分配非原始數據類型的值時內存將如何分配一樣。Integer a = 3;會在堆棧或堆中創建內存嗎?
1 回答

GCT1015
TA貢獻1827條經驗 獲得超4個贊
該變量a
將位于堆內存或堆棧內存中,具體取決于它是什么類型的變量:
方法或構造函數局部變量(包括參數)- 在堆棧上
實例變量(又名屬性或字段)- 在堆上
類變量 - 在堆上。
(為了完整起見,有幾個模糊的情況,其中 lambda 或內部類引用封閉范圍中的有效最終局部變量。在這些情況下,原始變量內容的副本將存儲在堆中。)
Integer
表示裝箱值的對象將3
在堆上。
對該對象的引用的副本存儲在變量中a
的任何位置。在 JVM 的其他地方可能有該引用的其他副本。
添加回答
舉報
0/150
提交
取消