1. 程式人生 > >JVM記憶體區域劃分及其作用

JVM記憶體區域劃分及其作用

和堆一樣,是各個執行緒共享的記憶體區域,用於儲存已被虛擬機器載入的類資訊、常量、靜態變數、和編譯器編譯後的程式碼(也就是儲存位元組碼檔案。.class)等資料,這裡可以看到常量也會在方法區中,是因為方法區中有一個執行時常量池,為什麼叫執行時常量池,因為在編譯後期生成的是各種字面量(字面量的意思就是值,比如inti=3,這個3就是字面量的意思)和符號引用,這些是存放在一個叫做常量池(這個常量池是在位元組碼檔案中)的地方,當類載入進入方法區時,就會把該常量池中的內容放入執行時常量池中。這裡要注意,執行時常量池和常量池,不要搞混淆了,位元組碼檔案中也有常量池,在後面的章節會詳細講解這個東西。現在只需要知道方法區中有一個執行時常量池,就是用來存放常量的。還有一點,執行時常量池不一定就一定要從位元組碼常量池中拿取常量,可能在程式執行期間將新的常量放入池中,比如
String.intern()方法,這個方法的作用就是:先從方法區的執行時常量池中查詢看是否有該值,如果有,則返回該值的引用,如果沒有,那麼就會將該值加入執行時常量池中。