java虚拟机规范虽然没有强制性约束在什么时候开始类加载过程,但是对于类的初始化,虚拟机规范则严格规定了有且只有四种情况必须立即对类进行初始化,遇到new、getStatic、putStatic或invokeStatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成这4条指令 ...
分类:
编程语言 时间:
2016-09-24 17:34:52
阅读次数:
209
类加载的时机 遇到new、getstatic、putstatic或invokestatic这4个字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成这4条指令最常见的Java场景是:使用new关键字实例化对象的时候、读取或设置一个类的静态字段(被final修饰、已在编译期把结果放入到常量 ...
分类:
编程语言 时间:
2016-05-19 23:08:58
阅读次数:
187
在java代码运行期间,方法间的调用可以说是最为频繁的了,那么这些方法间的调用在底层的虚拟机又做了什么事情呢?现在就让我们揭开那道神秘的面纱。 JVM调用方法有五条指令,分别是invokestatic,invokespecial,invokevirtual,invokeinterface,in...
分类:
其他好文 时间:
2015-05-06 22:29:02
阅读次数:
199
java虚拟机中提供了5种调用字节码指令,分别是 invokestatic: 调用静态方法 invokespecial:调用实例构造器方法,私有方法,和父类方法. invokevirtual:调用虚方法. invokeinterfaceL调用接口方法,会在运行时再确定一个实现此接口的对象. ...
分类:
其他好文 时间:
2015-05-05 01:20:31
阅读次数:
150
从字节码层面来看,Java中的所有方法调用,最终无外乎转换为如下几条调用指令。invokestatic: 调用静态方法。invokespecial: 调用实例构造器方法,私有方法和父类方法。invokevirtual: 调用所有的虚方法。invokeinterface: 调用接口方法,会在运行时再确...
分类:
编程语言 时间:
2015-04-14 19:32:26
阅读次数:
152
在JDK7之前方法调用的字节码指令共有四条,invokeinterface、invokespecial、invokestatic、invokevirtual。由这四条指令完成Java中所有类型方法的调用。
invokeinterface(调用接口方法)
无符号数indexbyte1和indexbyte2共同组件一个当前类常量池索引(index),该索引值为(indexby...
分类:
其他好文 时间:
2014-12-18 22:19:37
阅读次数:
350
JVM中相关方法的调用的指令
invokestatic
调用静态方法。
invokespecial
用于调用构造器方法、私有方法、父类方法。
invokevirtual
用于调用类的所有虚方法。
invokeinterface
用于调用接口方法。
解析(resolution)与分派(dispatch)
解析
解析调用一定是个静态的过程,在编译期间就完全确定,在类装载的解析阶段...
分类:
其他好文 时间:
2014-08-28 13:24:09
阅读次数:
308