java字节码技术

一个字节码占一个字节,也就说最多256种操作码

根据指令的特性,主要分为四大类:

  • 栈操作指令,包括与局部变量交互的指令
  • 程序流程控制指令
  • 对象操作指令,包括方法调用指令
  • 算术运算及类型转换指令

使用javap命令查看编译好的class文件的内部字节码

字节码的运行时结构

JVM是一台基于栈的计算机器。
每个线程都有一个独属于自己的线程栈,用于存储栈帧。
每一个方法调用,jVM都会自动创建一个栈帧。
栈帧由操作数栈、局部变量数组一级一个Class引用组成。Class引用指向当前方法在运行时常量池中对应的Class。

方法调用的指令

  • invokestatic:用于调用某个类的静态方法

  • invokespecial:用来调用构造函数,也可以调用同一个类中的privat方法以及可见的超类方法。

  • invokevirtual:如果是具体类型的目标对象,invokevirtual用于调用公共、受保护、和package级的私有方法。

  • invokeinterface:打不过通过接口引用来调用方法时,将会便以为invokeinterface

  • invokedynamic:JDK新增加的指令,是实现“动态类型语言”支持而进行的升级改造、同时也是JDK8以后支持lambda表达式的实现基础。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容