JVM 符号引用

JVM加载.class文件的过程是

1. 装载 根据查找路径找到相对应的class文件,然后导入

 (BootstrapLoader--ExtClassLoader--AppClassLoader  由父类开始检索自己的路径,看是否能找到待加载的类,如果不行,则交给子类处理)

2. 链接

 2.1 检查 检查待加载的class文件的正确性

 2.2 准备 给类中的静态变量分配存储空间

 2.3 解析 将符号引用转换成直接引用

3. 初始化 对静态变量和静态代码块执行初始化工作



符号引用:

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


例: com.xxx.People.java 中引用了另一个类 com.xxx.Teacher

则People中会有一个字符串,表明我有一个com.xxx.Teacher的引用,这就是符号引用。

解析的过程就是根据字符串代表的符号引用,搜索类/方法/属性的地址/偏移量,进行的转换。

猜你喜欢

转载自blog.csdn.net/u010113247/article/details/52423296