美文网首页
invokedynamic相关

invokedynamic相关

作者: 麦香小瑜儿 | 来源:发表于2019-02-21 23:56 被阅读0次

关键概念

  • invokedynamic指令:invokedynamic 是 Java 7 引入的一条新指令,用以支持动态语言的方法调用。具体来说,它将调用点(CallSite)抽象成一个 Java 类,并且将原本由 Java 虚拟机控制的方法调用以及方法链接暴露给了应用程序。在运行过程中,每一条 invokedynamic 指令将捆绑一个调用点,并且会调用该调用点所链接的方法句柄。
  • 方法句柄(MethodHandle):是一个强类型的,能够被直接执行的引用。该引用可以指向常规的静态方法或者实例方法,也可以指向构造器或者字段。当指向字段时,方法句柄实则指向包含字段访问字节码的虚构方法,语义上等价于目标字段的 getter 或者 setter 方法。
  • 方法句柄的类型(MethodType):是由所指向方法的参数类型以及返回类型组成的。它是用来确认方法句柄是否适配的唯一关键。当使用方法句柄时,我们其实并不关心方法句柄所指向方法的类名或者方法名。
  • 调用点(callSite):由启动方法生成,且被绑定到invokedynamic指令
  • 启动方法(BootStrap Method):生成前面提到的调用点,并且将之绑定至该 invokedynamic 指令中;

动态调用点

3种类型的动态调用点

关键流程

invokedynamic的绑定

示例代码

参考

相关文章

  • invokedynamic相关

    关键概念 invokedynamic指令:invokedynamic 是 Java 7 引入的一条新指令,用以支持...

  • 虚拟机字节码执行引擎【动态类型语言支持(三)】

    invokedynamic指令 invokedynamic指令与MethodHandle机制的作用是一样的,都是为...

  • Invokedynamic

    Invokedynamic指令是java7中加入的字节码指令,理解这条指令可以让我们熟悉程序的执行流程,这篇文章将...

  • invokedynamic

    invokedynamic在调用方法时,是通过方法句柄来调用的. 方法句柄调用,一种在虚拟机中的强类型的调用,可以...

  • java动态类型语言支持(三)

    invokedynamic指令 在前面java动态类型语言支持(一)(二)中我们有提到invokedynamic指...

  • invokedynamic指令和Lamada实现原理详解

    这个是invokedynamic指令实现的基础,本篇以Lamada的实现原理为例说明invokedynamic的具...

  • MethodHandle详解

    从《Java虚拟机规范》中invokedynamic的描述可知invokedynamic的底层实现是基于java....

  • 理解 invokedynamic

    inDy(invokedynamic)是 java 7 引入的一条新的虚拟机指令,这是自 1.0 以来第一次引入新...

  • invokedynamic指令

    Java虚拟机的字节码指令集的数量从Sun公司的第一款Java虚拟机问世至JDK 7来临之前的十余年时间里,一直没...

  • SubRoutine

    众所周知jvm有invokestatic,invokedynamic,invokestatic,invokespe...

网友评论

      本文标题:invokedynamic相关

      本文链接:https://www.haomeiwen.com/subject/ybgqyqtx.html