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 初始化 

posted @ 2021-01-13 22:49  forrestXu  阅读(93)  评论(1)    收藏  举报