jvm类加载机制

  最近找工作,感觉差的太多了,要学的东西还很多。希望自己可以每天都学习会,加油!如果有写的不对的欢迎大家留言分享经验哦!

  jvm类加载流程:

  Main方法中有一个类Math.class类,当加载math类的时候,

  1.Windows系统下 java.exe会调用底层的jvm.dll文件创建虚拟机(由C++实现);

  2.jvm会创建一个引导类加载器实例(c++实现)

  3.C++会调用java代码,创建jvm启动器Launcher,通过getLauncher方法获取到当前运行的类加载器     

   Launcher 该类由引导类加载器加载,负责加载其他的类加载器

0
 0

  4.调用Launcher类中的getClassLoader(),获取到自己的类加载器,该类是应用类加载器实例


0


0

  5.调用loadClass()加载要运行的类Math

0

   
0

  6.加载完成,JVM会调用Math类的main方法入口

 

 

类加载器分为四种:

启动类加载器:负责支撑JVM运行的位于jre的lib目录下的核心类库 :rt.jar、charsets.jar等

扩展类加载器:负责支撑JVM运行的位于jre的lib目录下的Ext扩展类中的jar类包

应用类加载器:负责加载classPath路径下的包,主要是自己写的类

自定义类加载器:负责加载用户自定义路径下的类

 

posted @ 2021-04-06 23:08  小菜鸟儿的学习笔记  阅读(58)  评论(0)    收藏  举报