java方法存儲(chǔ)在哪里 JAVA變量存放在棧中還是存放在堆中?
JAVA變量存放在棧中還是存放在堆中?堆棧內(nèi)存:調(diào)用函數(shù)時(shí),該函數(shù)將在堆棧內(nèi)存中應(yīng)用一個(gè)空間。稍后,函數(shù)中定義的變量將分配給函數(shù)應(yīng)用的堆棧。當(dāng)函數(shù)完成時(shí),分配給函數(shù)的堆??臻g被收回,函數(shù)中定義的變量被
JAVA變量存放在棧中還是存放在堆中?
堆棧內(nèi)存:調(diào)用函數(shù)時(shí),該函數(shù)將在堆棧內(nèi)存中應(yīng)用一個(gè)空間。稍后,函數(shù)中定義的變量將分配給函數(shù)應(yīng)用的堆棧。當(dāng)函數(shù)完成時(shí),分配給函數(shù)的堆棧空間被收回,函數(shù)中定義的變量被釋放并消失。
堆和新對(duì)象是通過(guò)堆中的內(nèi)存分配生成的。堆內(nèi)存中分配的內(nèi)存由JVM提供的GC(垃圾收集機(jī)制)管理。在堆內(nèi)存中生成數(shù)組對(duì)象之后,我們還可以在堆棧中定義一個(gè)變量。堆棧中變量的值等于堆中對(duì)象的第一個(gè)地址。堆棧內(nèi)存中的變量成為堆內(nèi)存中數(shù)組或?qū)ο蟮囊米兞?。將?lái),我們可以直接使用堆棧中的變量來(lái)訪問(wèn)在堆中分配的數(shù)組或?qū)ο?。引用變量等效于?shù)組或?qū)ο蟮膭e名或代號(hào)。
參考變量是一個(gè)公共變量,定義時(shí)在堆棧中分配。當(dāng)引用變量在其作用域之外運(yùn)行時(shí),它將被釋放,而我們的數(shù)組和對(duì)象將在堆中分配。即使程序運(yùn)行到新語(yǔ)句用于生成對(duì)象的函數(shù)或代碼之后,我們剛剛生成的數(shù)組和對(duì)象也不會(huì)被釋放。數(shù)組和對(duì)象成為垃圾,只有當(dāng)沒(méi)有指向它的引用變量時(shí),也就是說(shuō),沒(méi)有值等于其第一個(gè)地址的引用變量時(shí),才會(huì)使用它們。但是,它們?nèi)匀徽加脙?nèi)存空間(這是Java消耗內(nèi)存的原因之一),并且它們?cè)诓淮_定的時(shí)間被垃圾收集器收集。
java中,靜態(tài)變量存儲(chǔ)在哪個(gè)區(qū)啊,堆還是棧啊,或者說(shuō)其他地方,謝謝?
存儲(chǔ)在類定義中,即類文件中,編譯運(yùn)行時(shí)將映射到內(nèi)存
實(shí)例化類時(shí),首先在靜態(tài)存儲(chǔ)區(qū)域創(chuàng)建靜態(tài)屬性,然后創(chuàng)建類的屬性,即堆棧中的全局變量,
如果屬性是8種基本數(shù)據(jù)類型,則會(huì)存儲(chǔ)堆棧中的值,
相反,指向堆內(nèi)存的地址會(huì)存儲(chǔ)在堆棧中
建議讀取-->