读深入理解JAVA虚拟机笔记
解析阶段是虚拟机将常量池内的符号引用替换为直接引用的过程。二者之间的关联如下
符号引用(Symbolic Reference):符号引用以一组符号来描述所引用的目标,符号可以是任何形式的字面量,只要使用时能无歧义的定位到目标就行,
符号引用与虚拟机的内存布局没有关系,引用的目标不一定需要已经加载到内存中。种种虚拟机的内存布局可以都不相同。但是他们能接受的符号引用必须是一致的。
符号引用的字面量形式明确定义在JAVA虚拟机规范的Class文件中。
直接引用(Direct Reference):直接引用是直接指向目标的指针、相对偏移量或是一个能间接定位到目标的句柄。直接引用是和虚拟机实现的内存布局相关的,同一个符号引用在不同虚拟机实例上翻译出来的直接引用一般不会相同,如果有了直接引用,那引用的目标必定在内存中存在。