【Introdução ao carregador de classe】
Um carregador de classe é usado para carregar arquivos de classe em uma máquina virtual JVM. Existem três tipos de carregadeiras na JVM, carregador de classe de bootstrap, carregador de classe de extensão e carregador de classe de aplicativo. Além disso, você também pode herdar a classe java.lang.classloader para criar um carregador personalizado.
【Tipo de carregador de classe】
1. Bootstrap: não é uma classe Java. Está escrito em C ++, incorporado no kernel da JVM, e é usado para chamar a execução de código nativo usando o JNI (JavanativeInterface). O carregador da classe de inicialização é responsável por carregar a biblioteca de classe Java Core, como o arquivo rt.jar em java_home/jre/lib. Este arquivo jar contém algumas classes comuns, como:
java.lang.system java.util.hashmap
2. ExtclassLoader: herdado da classe java.lang.classloader, usado para carregar o arquivo JAR abaixo do caminho de extensão, o caminho de extensão é java_home/jre/lib/ext
3. Classe de aplicativo Loader (AppClassLoader): herda da classe java.lang.classloader, usada para carregar a classe abaixo da classe. rindo alto
【Mecanismo de delegação do carregador de classe】
1. Quando o aplicativo precisar carregar uma classe, o arquivo bytecode da classe necessário será carregado no caminho correspondente na ordem de bootstrap, extclassloader e AppClassLoader.
2. Podemos compilar a classe personalizada em um arquivo de classe e digitá -lo em um pacote JAR e colocá -lo no caminho java_home/jre/lib/ext. Quando o carregador de classe for carregado, ele será carregado no caminho java_home/jre/lib/ext usando o carregador ExtclassLoader e não será carregado sob o caminho de classe usando o carregador AppClassLoader.
3. Depois de usar o carregador de classe em ordem de bootstrap, extclassloader, AppClassLoader e não carregar a classe, a classe não será encontrada: java.lang.classnotfoundException
【Demoção de aplicativo】
1.Bootstrap: Escrito em C ++, incorporado no kernel da JVM, não uma classe Java
ClassLoader carregador = System.class.getClassLoader (); System.out.println (carregador); //nulo
2. AppClassLoader: use o carregador AppClassLoader para carregar a classe abaixo da classe
ClassLoader carregador = classeLoadetest.class.getClassLoader (); System.out.println (carregador.getclass (). GetName ()); //sun.misc.launcher$AppClassLoader
3.ExtClassLoader: Usado para carregar a classe Java sob o caminho java_home/jre/lib/ext. Uma vez encontrado, ele não será carregado no caminho de classe.
Escreva uma classe Hello personalizada, digite -a em um pacote JAR e exportá -lo para C: /programfiles/java/jdk1.7.0/jre/lib/ext/excelsoft.jar Path.
Classloader carregador = hello.class.getclassloader (); System.out.println (carregador.getclass (). GetName ()); //sun.misc.launcher$ExtClassLoader
===========================================
Os carregadores de classe são um tópico relativamente complexo, apenas para a introdução!
Resumir
O exposto acima é todo o conteúdo deste artigo sobre a análise básica do carregador de classe da JVM, e espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!