[讨论] jvms的几个疑问

chenk818 2011-09-15
1、对于vm来说,执行每个指令的时间是否有区别?如dstore,iflt

2、vm调用方法新加了个invokedynamic,看了文档半天没明白。这个指令以前是没有的,想请教一下,该指令是做什么用的,新加出来为了解决什么问题?
RednaxelaFX 2011-09-15
1、JVM的字节码指令只规定了语义,不规定性能。在常见实现里,即便是用解释器来实现,JVM的各个字节码指令的性能也是不一样的;更有可能的是经过运行时的动态编译后某些字节码融合了或消失了,此时关注单个字节码的性能是无意义的。

2、invokedynamic最大的意义在于:原本的4个invoke-指令都强制规定了分派规则,而invokedynamic将分派决定交给了上层的Java代码来控制。这样,Java程序就可以对某个调用点(CallSite)有更高的控制权,实现更高的自由度:例如说按名字分派,按实际参数的类型来分派,等等。
Global site tag (gtag.js) - Google Analytics