符号引用与直接引用

符号引用

用一组符号来描述目标,可以是任何字面。符号引用与虚拟机的内存布局无关,引用的目标并不一定能加载到内存中。在编译时,java类并不知道类的实际地址,因此只能使用符号引用来代替。例如org.simple.People类引用了org.simple.Language类,在编译时People类并不知道Language类的实际内存地址,因此只能使用符号org.simple.Language来表示Language类的地址。

直接引用

直接指向目标的指针、相对偏移量或一个间接定位到目标的句柄。如果有了直接引用,那引用的目标必定已经被加载到了内存当中。