元數(shù)據(jù)區(qū)存儲什么?
java8中移除了永久帶,新增了元空間的概念。JVM加載類的時候,需要記錄類的元數(shù)據(jù),這些數(shù)據(jù)會保存在一個單獨的內(nèi)存區(qū)域中,在java7里,這個空間被稱為永久代,在java 8里,使用元空間代替了永久代。永久代和元空間保存的數(shù)據(jù)并不完全一樣,永久代還保存另一些與類的元數(shù)據(jù)無關(guān)的雜項。
在java7里,將字符串常量從永久代移到了堆區(qū)域,但是永久代并沒有完全改造完成。直到j(luò)ava 8,永久代的改造才算完全搞定,在元空間中保存的數(shù)據(jù)比永久代純粹的多,就是類的元數(shù)據(jù),這些信息只對編譯器或JVM的運行時才有用。
在java8中,符號引用存儲在native heap中,字符串常量和靜態(tài)類型變量存儲在普通的堆區(qū)中。