符号引用不会加载到虚拟机内存中,而直接引用是在内存中的。
符号引用:
在java中,一个java类会变编译为字节码文件,在编译时,java类并不知道所引用类的实际地址(也就是直接引用),所以要用符号引用来代替,在编译完成后,类加载时,在解析这一步来将符号引用来转变为直接引用。
例如:比如org.simple.People类引用了org.simple.Language类,在编译People类时并不知道Language类的实际内存地址,
因此只能使用符号org.simple.Language。(假设是这个,当然实际中是由类似于CONSTANT_Class_info的常量来表示的)
直接引用:也就是对象在堆中的真实的地址。