JVM学习之loading部分1
对象从硬盘加载到内存分3个部分:
1、loading,分成二进制文件部分和类对象两部分,类对象指向文件。classLoader对象来操作加载,采用双亲委派机制,从上到下分4层加载:
1)bootstrap ,用来加载jiava 核心包,基础包 lib jar等,底层用c++实现,直接获取显示null
2)ext,扩展类
3)app,应用类,classpath目录下,一般我们创建的类的加载器都是该方法
4)custoemr 自定义类型,可自己定义 加载方式。只需要继承classloader类实现findclass方法即可。 tomcat的热部署实现采用重写classloader方法
当类加载时,从下到上检查类型,从上到下进行实际查找。父加载器只是加载器有个parent属性,没有实际的继承关系。
2、linking 分成3个小阶段
1) verification 校验 二进制码是cafebaby开头的class编译文件
2)preparation 预处理 静态成员变量给赋默认值 如int=0,string=null
3)resolution 将类,方法,属性等符号引用解析为直接引用
3、initialize 初始化

浙公网安备 33010602011771号