JVM参数及常见助记符

                                JVM参数

三种类型
-XX:+< option >,表示开启option选项
-XX:-< option >,表示关闭option选项
-XX:< option >=< value >,表示将option选项的值设置为value
正如之前用过-XX:+TraceClassLoading便是开启这个选项(类加载信息)
在这里插入图片描述
这个结果肯定是毫无疑问的,上一篇文章也已经进行了说明,我们继续再看!
在这里插入图片描述
我们可以看到添加了final修饰符后的结果并没有执行静态代码块的程序,首先我们知道final本身它表示是一个常量,str的值一旦被赋予之后就不能被改变了,常量在编译阶段就会被存入到调用这个常量的那个方法所在的类的常量池当中,在上面的例子看来就是存放到MyTest2这个类的常量池,本质上,调用类并没有直接引用到定义常量的类,因此并不会触发该类的初始化,那么Myparent2该类的静态代码块不会被执行

注意:str常量存放到了MyTest2的常量池后,MyTest2与MyParent2就无任何关系了,我们
甚至可以将Myparent2的class文件删除
在这里插入图片描述
可以看到输出结果依然没有发生任何的改变,这也就验证了上面所说的结论,接着往下看
在这里插入图片描述
对MyTest2进行反编译看到结果:
getstatic助记符:就是对out这个静态成员变量进行了访问
我们还看到Myparent2.str已经成为了确切的值(编译时),并不用从Myparent2中去取
ldc助记符:将int,float或是String类型的常量值从常量池中推送至栈顶
bipush:将单字节(-128 - 127)的常量值推送至栈顶 例:shrot s=127
sipush:将一个短整型常量值(-32768 - 32767)推送至栈顶 例:int s=128
iconst_1表示将int类型1推送至栈顶 (iconst_m1 - iconst_5 ) 例: int s=-1至5

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值