符号引用与直接引用

参考博文: JVM中的直接引用和符号引用

符号引用

  • 与内存布局无关
  • 使用时能无歧义的定义到目标
  • 引用目标不一定加载在内存中

符号引用是一个字符串,它给出了被引用的内容的名字并且可能会包含一些其他关于这个被引用项的信息——这些信息必须足以唯一的识别一个类、字段、方法

  • 对于其他类的符号引用必须给出类的全名
  • 对于其他类的字段,必须给出类名、字段名以及字段描述符
  • 对于其他类的方法的引用必须给出类名、方法名以及方法的描述符。

直接引用

  • 直接指向目标的指针、偏移量、或定位到目标的句柄
  • 与内存布局相关

对于指向“类型”(Class对象)、类变量、类方法的直接引用可能是指向方法区的本地指针

  • 实例变量的直接引用可能是从对象的映像开始算起到这个实例变量位置的偏移量
  • 实例方法的直接引用可能是方法表的偏移量