JVM 指令04__方法调用指令和返回指令

一、方法调用指令

在 Jvm 指令当中涉及到方法调用的指令有 5 个,分别是 invokeinterface、invokestatic、invokespecial、invokedynamic、invokevirtual

invokeinterface: 用于调用接口方法,它会在运行时搜索该接口的实现类,在具体的实现类中找出合适的方法进行调用

invokestatic: 用于调用类中的静态方法(静态绑定)

invokespecial: 用于调用一些需要进行特殊处理的方法,具体有实例的构造方法、私有方法、父类的方法,无论如何搜索,最终找到的调用方法都是唯一确定的(静态派发)

invokevirtual: 用于调用对象的实例方法,根据对象的实际类型进行动态派发,支持多态(动态派发)

invokedynamic: 用于调用动态绑定的方法

 

二、方法返回指令

方法返回指令是将当前方法栈帧(活动栈帧)中操作数栈栈顶的元素弹出,并将这个操作数压入方法调用者的操作数栈的栈顶位置

执行返回指令之后即当前方法已结束,活动栈帧弹出虚拟机栈,此时方法调用者对应的方法成为新的活动栈帧

数据类型 返回指令
void return
boolean、byte、short、char、int ireturn
float freturn
double dreturn
long lreturn
reference areturn

 

posted @   变体精灵  阅读(74)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2021-12-02 HTTP 协议中 URI 和 URL 有什么区别
2021-12-02 Java 获取指定范围内的日期时间
2020-12-02 Linux 安装 Nginx
2020-12-02 Nginx 入门
2020-12-02 Linux rz / sz 命令
点击右上角即可分享
微信分享提示