新聞中心
本篇文章給大家分享的是有關(guān)怎么Java淺析中的堆內(nèi)存與棧內(nèi)存分配,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
成都創(chuàng)新互聯(lián)公司公司2013年成立,先為陽泉等服務(wù)建站,陽泉等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為陽泉企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
Java 把內(nèi)存劃分成兩種:一種是棧內(nèi)存,另一種是堆內(nèi)存。在函數(shù)中定義的一些基本類型的變量和對象的引用變量都是在函數(shù)的棧內(nèi)存中分配,當(dāng)在一段代碼塊定義一個變量時,Java 就在棧中為這個變量分配內(nèi)存空間,當(dāng)超過變量的作用域后,Java 會自動釋放掉為該變量分配的內(nèi)存空間,該內(nèi)存空間可以立即被另作它用。
堆內(nèi)存用來存放由 new 創(chuàng)建的對象和數(shù)組,在堆中分配的內(nèi)存,由 Java 虛擬機的自動垃圾回收器來管理。在堆中產(chǎn)生了一個數(shù)組或者對象之后,還可以在棧中定義一個特殊的變量,讓棧中的這個變量的取值等于數(shù)組或?qū)ο笤诙褍?nèi)存中的首地址,棧中的這個變量就成了數(shù)組或?qū)ο蟮囊米兞?,以后就可以在程序中使用棧中的引用變量來訪問堆中的數(shù)組或者對象,引用變量就相當(dāng)于是為數(shù)組或者對象起的一個名稱。引用變量是普通的變量,定義時在棧中分配,引用變量在程序運行到其作用域之外后被釋放。而數(shù)組和對象本身在堆中分配,即使程序運行到使用 new 產(chǎn)生數(shù)組或者對象的語句所在的代碼塊之外,數(shù)組和對象本身占據(jù)的內(nèi)存不會被釋放,數(shù)組和對象在沒有引用變量指向它的時候,才變?yōu)槔?,不能在被使用,但仍然占?jù)內(nèi)存空間不放,在隨后的一個不確定的時間被垃圾回收器收走(釋放掉)。
這也是 Java 比較占內(nèi)存的原因,實際上,棧中的變量指向堆內(nèi)存中的變量,這就是 Java 中的指針!
以上就是怎么Java淺析中的堆內(nèi)存與棧內(nèi)存分配,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
新聞名稱:怎么Java淺析中的堆內(nèi)存與棧內(nèi)存分配
文章URL:http://www.dlmjj.cn/article/gdphdp.html