JAVA字节码执行引擎总结

字节码指令

大部分操作指令都有对应不同类型的不同指令,比如iload istore ireturn表示加载(整形变量进操作数栈)、定义一个整形局部变量、返回一个int类型值

return 1+1==》iconst 2;ireturn

编译期优化:直接将1+1定义为常量2 运行时就不用再做计算了

这段代码操作数栈的最大深度是 2

iadd:操作数栈顶两个元素出栈(pop)相加之后将结果放回栈顶

  1. begin
  2. iload_0 // push the int in local variable 0 onto the stack
  3. iload_1 // push the int in local variable 1 onto the stack
  4. iadd // pop two ints, add them, push result
  5. istore_2 // pop int, store into local variable 2
  6. end

img

https://blog.csdn.net/airjordon/article/details/72867397

局部变量槽的复用:

gc的时候buff仍然在局部变量表中因此不会回收!

此时虽然buff已经超出了作用域,但是手动GC仍然不会回收,因为slot槽复用。

这个时候GC生效了,因为定义a会对局部变量表进行读写。

https://blog.csdn.net/android_jiangjun/article/details/78436719

方法调用

解析调用:

分派调用:

静态分派:方法重载

动态分派:方法重写

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid

00:Java简单了解

浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。

JVM 字节码指令表

字节码助记符指令含义0x00nop什么都不做0x01aconst\_null将null推送至栈顶0x02iconst\_m1将int型1推送至栈顶0x03iconst\_0将int型0推送至栈顶0x04iconst\_1将int型1推送至栈顶0x05ic