类的加载机制分5个阶段
加载-----连接-----初始化-----使用-------卸载
|
分三步
|
验证-------准备-------解析 堆:类的类对象 每一个类运行期间都有一个类对象
方法区: 不变的东西 例如:静态常量 -------类对象可以想象成方法区里数据的目录
类分三种
根类加载器----儿子----扩展类加载器--------------系统类加载器--------------自定义加载器
父子关系不是通过集成来实现的,名义上是父子,实际并非是 真正的父类是object
根类加载器:负责加载java.*开头的核心代码
扩展类加载器(Extension ClassLoader):负责加载扩展的Java类,包括所有javax.*开头的类和存放在JRE的扩展目录下(JAVA_HOME/jre/lib/ext)中JAR的类包;
系统类加载器(Application ClassLoader)负责加载应用程序自身的类。
启动jvm
运行根类加载器去与运行java核心代码
确认父子关系 根类加载器和扩展类加载器
扩展类加载器去加载扩展的API
应用加载器搜索CLASSPATH目录,加载我们要运行的类。
类的class文件读入内存后,就会创建一个java.lang.Class对象。也就是说,当Java程序中使用任何类时,系统都会为之创建一个java.lang.Class对象。一旦某个类被载入JVM中,同一个类就不会再次被载入。