【Введение в загрузчик класса】
ClassLoader используется для загрузки файлов классов в виртуальную машину JVM. В JVM есть три типа погрузчиков, загрузчик класса начальной загрузки, загрузчик класса расширения и загрузчик класса приложения. Кроме того, вы также можете унаследовать класс java.lang.classloader, чтобы создать пользовательский загрузчик.
【Классовый погрузчик тип】
1. Bootstrap: это не класс Java. Он написан в C ++, встроенный в ядро JVM, и используется для вызова нативного выполнения кода с использованием JNI (JavanativeInterface). Загрузчик класса загрузки отвечает за загрузку основной библиотеки классов Java, такой как файл RT.JAR под Java_Home/Jre/Lib. Этот файл JAR содержит некоторые общие классы, такие как:
java.lang.system java.util.hashmap
2. Extclassloader: Унаследован от класса java.lang.classloader, используемый для загрузки файла JAR ниже пути расширения, путь расширения - Java_home/jre/lib/ext
3. Загрузка класса приложения (AppClassLoader): наследует от класса Java.lang.langloader, используемый для загрузки класса ниже класса. смеяться вслух
【Механизм делегирования классового погрузчика】
1. Когда приложение необходимо загрузить класс, файл Bytecode требуемого класса будет загружен под соответствующим путем в порядке начальной загрузки, extclassloader и Appclassloder.
2. Мы можем скомпилировать пользовательский класс в файл класса и ввести его в пакет JAR и поместить его в путь Java_Home/Jre/Lib/Ext. Когда загрузчик класса загружается, он будет загружен с пути Java_Home/JRE/LIB/EXT с использованием загрузчика ExtClassLoader, и не будет загружен под класс -точкой с использованием загрузчика AppClassLoader.
3. После использования загрузчика класса в порядке начальной загрузки, extclassloader, appclassloader и неспособности загрузить класс, класс не будет найден: java.lang.classnotfoundexception
【Демонстрация приложения】
1.Bootstrap: написано в C ++, встроенное в ядро JVM, а не класс Java
ClassLoader Loader = System.Class.getClassLoader (); System.out.println (погрузчик); //нулевой
2. Appclassloader: используйте загрузчик Appclassloader для загрузки класса ниже ClassPath
ClassLoader Loader = classLoadErtest.class.getClassLoader (); System.out.println (loader.getClass (). GetName ()); //sun.misc.launcher$Appclassloader
3. Extclassloader: используется для загрузки класса Java по пути Java_Home/Jre/Lib/Ext. После того, как он найден, он не будет загружен в тропинку.
Напишите пользовательский класс Hello, введите его в пакет JAR и экспортируйте его в c: /programfiles/java/jdk1.7.0/jre/lib/ext/excelsoft.jar.
ClassLoader Loader = hello.class.getClassloader (); System.out.println (loader.getClass (). GetName ()); //sun.misc.launcher$extclassloader
===================================================================
Загрузчики класса являются относительно сложной темой, только для введения!
Суммировать
Выше приведено все содержание этой статьи об базовом анализе загрузчика класса JVM, и я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!