類(lèi)變量(靜態(tài)變量)存儲(chǔ)在Class object
和那個(gè)班有關(guān)聯(lián)。這個(gè)class對(duì)象只能由JVM創(chuàng)建,并存儲(chǔ)在permanent generation
.
還有一些人回答說(shuō),它存儲(chǔ)在非堆區(qū),稱(chēng)為Method Area.
即使這個(gè)答案也沒(méi)錯(cuò)。Permgen區(qū)域是否是堆的一部分只是一個(gè)有爭(zhēng)議的話題。顯然,人與人之間的看法是不同的。在我看來(lái),我們?cè)贘VM參數(shù)中提供堆空間和permgen空間的方式不同。因此,以不同的方式對(duì)待它們是一個(gè)很好的假設(shè)。
另一種看法
內(nèi)存池是由JVM內(nèi)存管理器在運(yùn)行時(shí)創(chuàng)建的。內(nèi)存池可以屬于堆內(nèi)存,也可以屬于非堆內(nèi)存。運(yùn)行時(shí)常量池是類(lèi)文件中常數(shù)池表的每類(lèi)或每個(gè)接口運(yùn)行時(shí)表示形式。每個(gè)運(yùn)行時(shí)常量池都是從Java虛擬機(jī)的方法區(qū)域分配的,靜態(tài)變量存儲(chǔ)在這個(gè)方法區(qū)域中。此外,這個(gè)非堆只是perm gen區(qū)域,實(shí)際上方法區(qū)域是perm gen的一部分。參照系)