1 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
一個(gè)完整的Java程序運(yùn)行過程會(huì)涉及以下內(nèi)存區(qū)域:
l 寄存器:JVM內(nèi)部虛擬寄存器,存取速度非??欤绦虿豢煽刂?。
l 棧:保存局部變量的值,包括:1.用來保存基本數(shù)據(jù)類型的值;2.保存類的實(shí)例,即堆區(qū)對(duì)象的引用(指針)。也可以用來保存加載方法時(shí)的幀。
l 堆:用來存放動(dòng)態(tài)產(chǎn)生的數(shù)據(jù),比如new出來的對(duì)象。注意創(chuàng)建出來的對(duì)象只包含屬于各自的成員變量,并不包括成員方法。因?yàn)橥粋€(gè)類的對(duì)象擁有各自的成員變量,存儲(chǔ)在各自的堆中,但是他們共享該類的方法,并不是每創(chuàng)建一個(gè)對(duì)象就把成員方法復(fù)制一次。
l 常量池:JVM為每個(gè)已加載的類型維護(hù)一個(gè)常量池,常量池就是這個(gè)類型用到的常量的一個(gè)有序集合。包括直接常量(基本類型,String)和對(duì)其他類型、方法、字段的符號(hào)引用(1)。池中的數(shù)據(jù)和數(shù)組一樣通過索引訪問。由于常量池包含了一個(gè)類型所有的對(duì)其他類型、方法、字段的符號(hào)引用,所以常量池在Java的動(dòng)態(tài)鏈接中起了核心作用。常量池存在于堆中。
l 代碼段:用來存放從硬盤上讀取的源程序代碼。
l 數(shù)據(jù)段:用來存放static定義的靜態(tài)成員。
- 1 回答
- 0 關(guān)注
- 771 瀏覽
添加回答
舉報(bào)