java字节码

一、字节码详解

    1.字节码的运行是在栈中进行的。

    2.通过JDK中的编译器,用javac(java Compiler)命令编译源代码为字节码文件(.class),给JVM使用; 然后通过classLoader类加载器加载字节码; java源码 --> 编译成.class字节码 --> CL加载字节码 --> 字节码校验器 --> 字节码解释器 --> 硬件

    3.字节码指令有哪些:  monitorenter指令、monitorexit指令:在字节码对应位置加锁解锁;  
               iadd/ ladd/ fadd/ dadd指令:int/long/float/double的加法,弹出栈顶两个数字,求和之后压入栈顶;sub:减法
               load指令: 将局部变量加载到栈;  store指令: 把栈中的数据保存到局部变量表
               new指令:创建对象;    dup指令:复制顶部操作数的栈值

    4.字节码增强技术在spring AOP、ORM框架、热部署中的应用。 // todo

二、Integer x=5, int y=5, 比较 x==y 都经过哪些步骤?

        字节码角度讲int y=5单纯压入int类型变量,赋值为5,而Integer x=5则会调用Integer.valueOf()的方法。 x==y会使用到if_icmp指令比较。

三、java动态性

    1.实现动态性的三种主要方式:
            反射机制:性能较低,setAccessible=true可以快一点
            动态编译:JavaCompiler动态编译
            动态字节码操作:性能比反射高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值