任何語言所編寫的程序父能,其中的各類型的數(shù)據(jù)都需要一個(gè)存儲位置饥伊,Java中數(shù)據(jù)的存儲位置分為以下5種:
1.寄存器
這是最快的存儲區(qū)域犯祠,因?yàn)樗挥谔幚砥鲀?nèi)部紊浩,但是數(shù)量非常的有限窖铡。所以寄存器根據(jù)需求自動進(jìn)行分配,不能直接人為控制坊谁。
2.棧內(nèi)存
位于通用RAM當(dāng)中费彼,通過堆棧指針可以從處理器獲得直接支持。堆棧指針向下移動呜袁,則分配新的內(nèi)存敌买;向上移動,則釋放那些內(nèi)存阶界。這種存儲方式速度僅次于寄存器。
3.堆內(nèi)存
一種通用的內(nèi)存池聋庵,也位于RAM當(dāng)中膘融,用于存放所有的JAVA對象,其中存放的數(shù)據(jù)由JVM自動進(jìn)行管理祭玉。
4.常量池
常量通常直接存儲在程序代碼內(nèi)部(常量池)氧映。這樣做是很安全的,因?yàn)樗鼈兊闹翟诔跏蓟瘯r(shí)就已經(jīng)被確定脱货,并且不會被改變岛都。常量池在java用于保存在編譯期已確定的,已編譯的class文件中的一份數(shù)據(jù)振峻。
5.非RAM存儲區(qū)
如果數(shù)據(jù)完全存活于程序之外的話臼疫,那么它可以不受程序的任何控制,在程序沒有運(yùn)行時(shí)也可以存在扣孟。