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