方法區(qū)與堆一樣都是線程共享的內(nèi)存區(qū)域它用于存儲已被虛擬機加載的類信息、常量、靜態(tài)變量、即時編譯器編譯后的代碼等數(shù)據(jù)。而運行時常量池是方法區(qū)的一部分它主要用于存放編譯期聲明各種字面量和符號引用。
創(chuàng)新互聯(lián)公司專注于河間網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供河間營銷型網(wǎng)站建設(shè),河間網(wǎng)站制作、河間網(wǎng)頁設(shè)計、河間網(wǎng)站官網(wǎng)定制、
微信小程序開發(fā)服務(wù),打造河間網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供
河間網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
直接內(nèi)存
直接內(nèi)存并不是虛擬機運行時數(shù)據(jù)區(qū)的一部分也是不Java規(guī)范中定義的內(nèi)存區(qū)域你可以簡單理解為堆外內(nèi),內(nèi)存分配不受Java堆大小的限制但受整個內(nèi)存大小的限制。
類加載的流程
加載、驗證、準備、解析、初始化五步其中加載、驗證、準備、初始化是順序執(zhí)行的而解析則不一定它有可能會在初始化之后執(zhí)行。
加載
在加載階段JVM需要完成三個步驟:首先通過類的全限定名來獲取定義此類的二進制字節(jié)流然后將這個字節(jié)流所代表的靜態(tài)存儲結(jié)構(gòu)轉(zhuǎn)化為方法區(qū)的運行時數(shù)據(jù)結(jié)構(gòu),最后在內(nèi)存中生成一個代表這個類的java.lang.Class對象作為方法區(qū)這個類的各種數(shù)據(jù)入口。在第一步獲取二進制字節(jié)流中并沒有明確的指出從一個*.class文件中獲取規(guī)定的靈活性導致我們可以從ZIP、從數(shù)據(jù)庫獲取。
驗證
驗證其實就是為了確保Class文件字節(jié)流中包含信息符合JVM的要求因為Class文件的來源途徑不一定中規(guī)中矩的從編譯器產(chǎn)生,也可能用十六進制編輯器直接編寫Class文件校驗流程為文件格式校驗、元數(shù)據(jù)驗證、字節(jié)碼驗證這地方的具體安全校驗方式不再細說。
網(wǎng)站名稱:Java虛擬機--一段Java程序的生命史(四)
文章分享:
http://weahome.cn/article/cposih.html