有人用下面提到的場(chǎng)景好心地消除了我對(duì) Java 內(nèi)存管理的疑慮。當(dāng)我們?yōu)樵紨?shù)據(jù)類型變量賦值時(shí),該值將存儲(chǔ)在堆棧內(nèi)存中。如果我理解錯(cuò)了這個(gè)概念,請(qǐng)糾正我。就像下面提到的分配非原始數(shù)據(jù)類型的值時(shí)內(nèi)存將如何分配一樣。Integer a = 3;會(huì)在堆?;蚨阎袆?chuàng)建內(nèi)存嗎?
1 回答

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