日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java虚拟机常量池和本地变量表、自己定义的数值自动装入常量池

發布時間:2025/4/14 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java虚拟机常量池和本地变量表、自己定义的数值自动装入常量池 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從此文可以大體了解,

? ??https://blog.csdn.net/bcbobo21cn/article/details/109108970

自己的程序中定義的數值,像 int a=999; ,這樣的,999這個值是自動裝入虛擬機常量池的;下面來看一下具體情況是不是;

hello4.java;此程序只是定義數值,啥也不做;然后反匯編之;

public class hello4 {public static void main(String[] args) { int a11 = -21474999;int a16 = -32769;int a07 = 32768;int a08 = 65535;int a09 = 65536;int a10 = 21474999;} }

構建;反匯編;

看一下對于每個定義的數值執行了2條指令:ldc,istore_n;

ldc: 從運行時常量池中提取數據并壓入操作數棧;
istore_<n>: 將一個int類型數據保存到本地變量表中;

? ? 也就是說,自己程序給定的數值,是自動裝入了虛擬機常量池;然后用ldc放入操作數棧,用istore指令在本地變量表中再存一份;

? ? 常量池在網上資料有很多解釋;什么是本地變量表,還有一個詞叫局部變量表,目前還不清楚二者的區別;

看一下下圖的描述;

從這圖看;每個線程有一個java虛擬機實例,其中包含一個虛擬機棧;各個類的方法調用的棧幀在虛擬機棧中;一個具體的棧幀中包含本地變量表、操作數棧等這些;本地變量表就放各種具體類型的數值;?

使用如下命令可以查看常量池;javap -verbose hello4

看 Constant pool:后面;自己程序給定的數值都在常量池中,這是自動裝入的;常量池中還有一些固定的符號,如 hello4 這些;

此命令還有如下輸出;

? ? 還有一個叫行號表,LineNumberTable ,的東西;先到這里;

總結

以上是生活随笔為你收集整理的Java虚拟机常量池和本地变量表、自己定义的数值自动装入常量池的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。