最近學習了JVM原理,遇到了運行時常量池的區域定義,他是屬於JVM運行時內存模型方法區中的一部分,整體分佈以下圖:java
以下圖:總體分佈以下學習
而運行、靜態常量池是屬於方法區的一部分,通常我一般說的是運行時的常量區,他跟靜態常量區區別是什麼?內存
我的認爲,靜態常量池是針對每一個被加載進入內存的class文件解析後,存放各個字面量值,符號引用的數據,而運行時常量區就是把全部的靜態常量的數據彙總到一塊兒(模糊來講)。class
更底層到彙編層面來講,內存中的各個數據沒有類這個概念,每次都是一個類一個方法的調用,就是至關於寄存器的相對變址尋址過程,變量
(上圖中#1 #2等是否就是計算實際地址的符號哪?)原理
運行時方法區就是把每一個類的惟一標識做爲他的段地址(DS),而內部的各個變量字段方法等都是偏移地址(BX),等到真正入棧執行時候這些字段方法的相對定位符等被解析成爲真正的地址,從而進入CS IP被識別執行;那麼進一步猜測java的權限包的概念是否也能夠由此獲得所有的類信息彙總後進行進一步控哪權限