我正在尝试理解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的一个实例, ·对Class、java.lang.invoke.MethodHandle、java.lang.invoke.MethodType和String实例的引用。
我们还有所谓的call site对象https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokedynamic
引导方法返回的结果必须是对类为
java.lang.invoke.CallSite或java.lang.invoke.CallSite子类的对象的引用。此对象称为call site对象。
call site对象概念是明确的。这只是CallSite的一个实例。但是呼叫站点说明者呢?那是Java对象吗?这是String的文字吗?
发布于 2018-03-21 22:04:59
invokedynamic指令的每一次发生。
在JVM执行动态调用站点( invokedynamic指令)之前,必须首先链接调用站点。链接是通过调用一个引导方法来完成的,该方法给出了调用站点的静态信息内容,并且必须生成一个给出调用站点行为的方法句柄。
//自java.lang.invoke包描述MethodHandle实例,而rest元素是调用该引导方法的参数。
无论调用站点说明符是如何在JVM中实现的,当它被解析时,它应该生成一个call site对象(java.lang.invoke.CallSite的一个实例),该对象将永久绑定到动态调用站点。https://stackoverflow.com/questions/49414207
复制相似问题