在java中,一个java类将会编译成一个class文件。
在编译时,java类并不知道引用类的实际内存地址,因此只能使用符号引用来代替。
比如org.simple.People类引用org.simple.Tool类,在编译时People类并不知道Tool类的实际内存地址,因此只能使用符号org.simple.Tool(假设)来表示Tool类的地址。
而在类装载器装载People类时,此时可以通过虚拟机获取Tool类 的实际内存地址,因此便可以既将符号org.simple.Tool替换为Tool类的实际内存地址,及直接引用地址。
也就是说,符号引用是在编译时被用来当类的内存地址的(也就是说符号引用就是内存地址)然后会在类装载进JVM时,在类装载第2步的链接中,链接的第三步解析中,就会将类的真正内存地址换掉符号引用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)