JVM运行时常量池跟静态常量池区别
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
? ? 最近學(xué)習(xí)了JVM原理,遇到了運(yùn)行時(shí)常量池的區(qū)域定義,他是屬于JVM運(yùn)行時(shí)內(nèi)存模型方法區(qū)中的一部分,總體分布如下圖:
?
如下圖:整體分布如下
而運(yùn)行、靜態(tài)常量池是屬于方法區(qū)的一部分,一般我通常說(shuō)的是運(yùn)行時(shí)的常量區(qū),他跟靜態(tài)常量區(qū)區(qū)別是什么?
?
?
?
個(gè)人認(rèn)為,靜態(tài)常量池是針對(duì)每個(gè)被加載進(jìn)入內(nèi)存的class文件解析后,存放各個(gè)字面量值,符號(hào)引用的數(shù)據(jù),而運(yùn)行時(shí)常量區(qū)就是把所有的靜態(tài)常量的數(shù)據(jù)匯總到一起(模糊來(lái)說(shuō))。
更底層到匯編層面來(lái)說(shuō),內(nèi)存中的各個(gè)數(shù)據(jù)沒有類這個(gè)概念,每次都是一個(gè)類一個(gè)方法的調(diào)用,就是相當(dāng)于寄存器的相對(duì)變址尋址過(guò)程,
(上圖中#1 #2等是否就是計(jì)算實(shí)際地址的符號(hào)哪?)
運(yùn)行時(shí)方法區(qū)就是把每個(gè)類的唯一標(biāo)識(shí)作為他的段地址(DS),而內(nèi)部的各個(gè)變量字段方法等都是偏移地址(BX),等到真正入棧執(zhí)行時(shí)候這些字段方法的相對(duì)定位符等被解析成為真正的地址,從而進(jìn)入CS IP被識(shí)別執(zhí)行;那么進(jìn)一步猜想java的權(quán)限包的概念是否也可以由此得到全部的類信息匯總后進(jìn)行進(jìn)一步控哪
?
?
?
?
轉(zhuǎn)載于:https://my.oschina.net/u/867830/blog/1609952
總結(jié)
以上是生活随笔為你收集整理的JVM运行时常量池跟静态常量池区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: web语义化方便了谁?
- 下一篇: myEtherWallet在线钱包的使用