方法描述符的构成及作用
方法描述符由方法的参数类型以及返回类型构成;
通过与类名、方法名配合来完成方法的标识;
扩展:
如果一个类中,出现多个方法名与描述符均相同的方法,那么虚拟机加载类的时候就会报错;
按照定义,虚拟机是可以根据方法的返回类型来区分描述符进而区分方法的,因此相同方法名、相同参数类型,只要返回类型不同,虚拟机就可以区分;但是java语言层面不允许这种情况出现;(区分java语言与java虚拟机)
符号引用的作用
符号引用的作用是描述所引用的目标,主要在解决以下问题:
java编译器将java代码编译为字节码时,并不知道相关的常量、方法在内存中的地址,不能编译为直接引用,所以使用符号引用。当相关的常量、方法被虚拟机执行时,会将符号引用解析为直接引用;
方法表
虚拟机在类加载的准备阶段,会为类分配内存,并构建与该类相关的方法表;
方法表记录了当前类及其祖先类中非私有的实例方法,使用的时数组结构;
方法表具有如下特点:
子类方法表中包含了父类方法表的所有方法
同一个方法如果同时在父类与子类的方法表中,那么它们的索引值相同
内联缓存
从名字来看,内联缓存时一种缓存技术,目的自然是用于优化速度;
内敛缓存主要时优化动态绑定的速度,也就是当一个对象,调用某方法时,通过方法表查找到该方法的实际引用,下一次调用是将不必查找方法表,直接从内联缓存中读取即可;
IT技术百货