日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

從此文可以大體了解,

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

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

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

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;} }

構建;反匯編;

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

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

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

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

看一下下圖的描述;

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

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

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

此命令還有如下輸出;

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

總結

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。