JVM学习笔记6:常量的本质含义与反编译及注记符详解

JVM学习笔记6:常量的本质含义与反编译及注记符详解一 虚拟机参数 1 XX TraceClassLo 用于追踪类的加载信息并打印出来同理还有一个 unLoading 保存 运行可以看到如下的信息 Loadedjava lang ObjectfromC ProgramFiles Java jdk1 8 0 191 jre lib rt jar 第二行就是我们常见的 Object 父类会发先父类和子类都加

一、虚拟机参数:

1、 -XX:+TraceClassLoding 用于追踪类的加载信息并打印出来 同理还有一个unLoading

JVM学习笔记6:常量的本质含义与反编译及注记符详解

保存、运行可以看到如下的信息

[Loaded java.lang.Object from C:\Program Files\Java\jdk1.8.0_191\jre\lib\rt.jar]  第二行就是我们常见的Object父类

JVM学习笔记6:常量的本质含义与反编译及注记符详解

会发先父类和子类都加载了,只是子类没有初始化,还是学习5的代码运行结果。

2、-XX: (所有的都是这个开头的) +

                                                     –

                                                     

第一个例子完,开始第二个例子

二、注记符,常量的初始化

1、常量的初始化:

在编译阶段这个常量存入调用这个常量的那个方法所在的类的常量池当中,本质上,调用类并没有直接引用到定义常量的类,因此并不会出发定义常量类的初始化。 注意:这里指的是将常量存放到Mytest2的常量池中,之后与MyParent2就没有关系了,甚至,我们可以将MyParent2的class文件删除
package com.shengsiyuan.jvm.classloder; //在编译阶段这个常量存入调用这个常量的那个方法所在的类的常量池当中 //本质上,调用类并没有直接引用到定义常量的类,因此并不会出发定义常量类的初始化 //注意:这里指的是将常量存放到Mytest2的常量池中,之后与MyParent2就没有关系了, //甚至,我们可以将MyParent2的class文件删除 //注记符: //ldc 表示将int,float 或是String类型的常量值从常量池推送至栈顶 //bipush 表示将单字节(-128~ 127)的常量推送至栈顶 //sipush 表示将一个短整型(-32768~ 32767)的常量推送至栈顶 //iconst_1 表示将int型 1 的常量推送至栈顶(1-5) iconst_2\iconst_5 public class Mytest2 { public static void main(String[] args) { //System.out.println(MyParent2.str); System.out.println(MyParent2.m); //iconst_1 } } class MyParent2{ //public static String str="Hello world"; //final 本身是一个常量,在编译阶段这个常量存入调用这个常量的那个方法所在的类的常量池当中,因此放入到的是test2的常量池当中 public static final String str="Hello world"; public static final short s=7; public static final int i=128; public static final int m=1; static { System.out.println("MyParent2 static block"); } } 

2、注记符

在编译的目录下,反编译文件,会得到如下的结果,ldc就是一种注记符

注记符: ldc 表示将int,float 或是String类型的常量值从常量池推送至栈顶 bipush 表示将单字节(-128~ 127)的常量推送至栈顶 sipush 表示将一个短整型(-32768~ 32767)的常量推送至栈顶 iconst_1 表示将int型 1 的常量推送至栈顶(1-5) iconst_2\iconst_5

jvm_lecture\build\classes\java\main> javap -c com.shengsiyuan.jvm.classloder.MyTest2

JVM学习笔记6:常量的本质含义与反编译及注记符详解

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176358.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午10:07
下一篇 2026年3月26日 下午10:08


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号