首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用方法时,Java中的调用站点是什么?

调用方法时,Java中的调用站点是什么?
EN

Stack Overflow用户
提问于 2018-03-21 18:37:17
回答 1查看 2.9K关注 0票数 3

我正在尝试理解JVM中什么是调用站点。来自https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-5.html#jvms-5.4.3.6的报价

调用站点说明符解析的结果是由以下内容组成的元组: ·提到java.lang.invoke.MethodHandle的一个实例, ·提到java.lang.invoke.MethodType的一个实例, ·对Classjava.lang.invoke.MethodHandlejava.lang.invoke.MethodTypeString实例的引用。

我们还有所谓的call site对象https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokedynamic

引导方法返回的结果必须是对类为java.lang.invoke.CallSitejava.lang.invoke.CallSite子类的对象的引用。此对象称为call site对象。

call site对象概念是明确的。这只是CallSite的一个实例。但是呼叫站点说明者呢?那是Java对象吗?这是String的文字吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-21 22:04:59

  • 动态呼叫站点是invokedynamic指令的每一次发生。 在JVM执行动态调用站点( invokedynamic指令)之前,必须首先链接调用站点。链接是通过调用一个引导方法来完成的,该方法给出了调用站点的静态信息内容,并且必须生成一个给出调用站点行为的方法句柄。 //自java.lang.invoke包描述
  • Call site说明符是描述如何链接给定呼叫站点的项(从常量池中获得)。 未指定此项目的实际内容. JVMS只告诉https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-5.html#jvms-5.1如何在常量池中调用站点说明符看起来像。 JVM实现可以自由选择调用站点说明符的内部表示形式。它可以是堆中的对象,也可以是本机内存中的元数据。例如,HotSpot JVM将调用站点说明符缓存为对象数组,其中第一个元素是表示引导方法的MethodHandle实例,而rest元素是调用该引导方法的参数。 无论调用站点说明符是如何在JVM中实现的,当它被解析时,它应该生成一个call site对象(java.lang.invoke.CallSite的一个实例),该对象将永久绑定到动态调用站点。
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49414207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档