JVM学习总结(一)

JVM--Java虚拟机

1.类加载器

  JVM虚拟机的类加载器有三个

    bootstrapClassLoader 引导类加载器 是有C语言编写,在JVM虚拟机启动时 加载到内存中负责加载rt.jar夹包内的类--jre内置夹包

    ExtClassLoader 扩展类加载器  Java语言编写,由引导类加载器加载,父加载器为引导类加载器,负责加载ext包内的所有jar包,--负责Java扩展功能组件接口

    ApplicantClassLoader 程序类加载器,  Java语言编写,由引导类加载器加载,父加载器为扩展类加载器,负责加载程序类,---加载运行程序

    自定义类加载器:及用户自定义的类加载器,继承ClassLoader类,

  如何加载?

    Java类加载器使用了双亲委托模式--一个需要加载的类首先由ApplicantClassLoader 类加载器加载,但是这个加载器不会直接加载,而是交给父类加载器ExtClassLoader 加载器加载,

    而这个加载器也不会立即加载,还会交给其父加载器bootstrapClassLoader 加载,当此加载器不能加载时由子类加载器加载,以此类推,具有递归的特性。

Tomcat服务器的类加载器

  1.tomcat服务器的类加载器和JVM的刚好相反,它是先有子类加载,如果加载不了交给父类加载器加载,以此类推,具有递归的特性。与代理模式类似

  2.tomcat服务器会为每个应用程序创建一套单独的类加载器,每个程序之间不可以访问。

OSGI模式

  这个模式在IDE工具插件中使用广泛。我们在Eclipse编辑器中安装各种插件,每个插件都有自己独立的类加载器,但是各插件之间可以访问其它插件公开的类。

原文地址:https://www.cnblogs.com/zbrave/p/6390864.html