Java 方法调用的底层实现

本文深入探讨JVM中方法调用的过程,介绍5种字节码指令:invokestatic、invokespecial、invokevirtual、invokeinterface和invokedynamic,以及非虚方法的概念,帮助理解JVM如何执行代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

我们写的代码,经过编译、经过类加载的各种阶段,进入了JVM的运行时数据区。

但作为程序员真正关心的是代码的执行,代码的执行其实本质上是方法的执行,站在JVM 的角度归根到底还是字节码的执行。main 函数式 JVM指令执行的起点,JVM 会创建 main线程来执行main函数,以触发JVM一系列指令的执行,真正的把 JVM 跑起来。接着,在我们的代码中,就是方法的调用过程,所以了解方法在 JVM 中的调用是非常有必要的。

方法调用的字节码指令

关于方法的调用,Java 字节码共提供了5个指令,来调用不同类型的方法:

  • invokestatic 用来调用静态方法
  • invokespecial 用来调用私有实例方法、构造器及 super 关键字等
  • invokevirtual 用于调用非私有方法,比如 public 和 protected,大多数方法调用属于这一种
  • invokeinterface 和上面指令类似,不过作用域接口类
  • invokedynamic 用来调用动态方法

 

非虚方法

如果方法在编译期就确定了具体的调用版本,这个版本在运行时是可变的,这样的方法称为非虚方法。

这不是完整内容,完整内容:http://www.19971001.com/article/33

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值