java中的棧、堆、方法區(qū)是什么?針對這個問題,這篇文章給出了相對應(yīng)的分析和解答,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。
為玉泉街道等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及玉泉街道網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、玉泉街道網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
棧中保存基本數(shù)據(jù)類型的值和對象以及基礎(chǔ)數(shù)據(jù)的引用;堆中存儲的全部是對象,每個對象都包含一個與之對應(yīng)的class的信息;方法區(qū)被所有的線程所共享,方法區(qū)包含所有的class和static變量。
1、Java棧
Java棧是一塊線程私有的空間,一個棧,一般由三部分組成:局部變量表、操作數(shù)據(jù)棧和幀數(shù)據(jù)區(qū)
局部變量表:用于報(bào)錯函數(shù)的參數(shù)及局部變量
操作數(shù)棧:主要保存計(jì)算過程的中間結(jié)果,同時作為計(jì)算過程中的變量臨時的存儲空間。
幀數(shù)據(jù)區(qū):除了局部變量表和操作數(shù)據(jù)棧以外,棧還需要一些數(shù)據(jù)來支持常量池的解析,這里幀數(shù)據(jù)區(qū)保存著訪問常量池的指針,方便計(jì)程序訪問常量池,另外當(dāng)函數(shù)返回或出現(xiàn)異常時賣虛擬機(jī)子必須有一個異常處理表,方便發(fā)送異常
的時候找到異常的代碼,因此異常處理表也是幀數(shù)據(jù)區(qū)的一部分。
2、Java 堆
堆內(nèi)存用于存放由new創(chuàng)建的對象和數(shù)組。在堆中分配的內(nèi)存,由java虛擬機(jī)自動垃圾回收器來管理。
在堆中產(chǎn)生了一個數(shù)組或者對象后,還可以在棧中定義一個特殊的變量,這個變量的取值等于數(shù)組或者對象在堆內(nèi)存中的首地址,在棧中的這個特殊的變量就變成了數(shù)組或者對象的引用變量,以后就可以在程序中使用棧內(nèi)存中的引用變量來訪問堆中的數(shù)組或者對象,引用變量相當(dāng)于為數(shù)組或者對象起的一個別名,或者代號根據(jù)垃圾回收機(jī)制的不同,Java堆有可能擁有不同的結(jié)構(gòu),最為常見的就是將整個Java堆分為
新生代和老年代。其中新聲帶存放新生的對象或者年齡不大的對象,老年代則存放老年對象。
新生代分為den區(qū)、s0區(qū)、s1區(qū),s0和s1也被稱為from和to區(qū)域,他們是兩塊大小相等并且可以互相角色的空間。絕大多數(shù)情況下,對象首先分配在eden區(qū),在新生代回收后,如果對象還存活,則進(jìn)入s0或s1區(qū),之后每經(jīng)過一次新生代回收,如果對象存活則它的年齡就加1,對象達(dá)到一定的年齡后,則進(jìn)入老年代。
3、Java方法區(qū)
Java方法區(qū)和堆一樣,方法區(qū)是一塊所有線程共享的內(nèi)存區(qū)域,他保存系統(tǒng)的類信息。比如類的字段、方法、常量池等。方法區(qū)的大小決定系統(tǒng)可以保存多少個類。如果系統(tǒng)定義太多的類,導(dǎo)致方法區(qū)溢出。虛擬機(jī)同樣會拋出內(nèi)存溢出的錯誤。方法區(qū)可以理解為永久區(qū)。
關(guān)于java中的棧、堆、方法區(qū)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
網(wǎng)站標(biāo)題:java中的棧、堆、方法區(qū)是什么
當(dāng)前地址:http://www.rwnh.cn/article12/ihjggc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站設(shè)計(jì)、標(biāo)簽優(yōu)化、Google、服務(wù)器托管、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)