1 回答

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