ClassLoader
ClassLoader
est une partie de l'environnement d'exécution Java (JRE) qui dynamiquement charge les classes (objets de l'environnement) - java.lang.Class
et les fichiers .class
) dans la JVM (Java Virtual Machine). JRE utilise chargement paresseux des classes (à la demande), cela permet de réduire l'empreinte mémoire. Lorsque l'application a besoin d'une classe, JRE demande à ClassLoader de charger cette classe.
Il existe une hiérarchie de la classe ClassLoader
- BootStrap ou Primodial - Racine et est intégré(retourne null quand getClassLoader()) Classes JDK. Charge les classes de rt.jar
- Extension(Platform Java v9) - classes de base en java. Charge les classes depuis le répertoire jre/lib/ext ou depuis la propriété système java.ext.dirs.
- Système/Application - classes d'application de
classpath
[À propos] ou option de ligne de commande (-cp, -classpath)
Vous pouvez également créer votre propre classe ClassLoader pour votre cas spécifique. Par exemple, charger une classe depuis un dépôt, travailler avec le versionning, le déchargement, la sécurité
Pour vérifier qui charge exactement votre classe, utilisez getClassLoader()
SomeClass.class.getClassLoader()
Trouver la classe flow(modèle de délégation)
child classloader find in cache
if not
parent classloader find in cache
if not
parent classloader try to load
if not
child classloader try to load
[ClassNotFoundException vs NoClassDefFoundError et chargement de classe implicite vs explicite].
[iOS Dynamic Linker]
0 votes
Vous obtiendrez de meilleurs résultats si vous précisez votre question, par exemple en indiquant une partie spécifique que vous ne comprenez pas, le lien avec une autre langue que vous connaissez, etc.
77 votes
Il s'agit d'une question tout à fait raisonnable, si l'on se place du point de vue de quelqu'un qui cherche quelques phrases simples pour expliquer le concept
1 votes
Cette vidéo pourrait vous intéresser : Vous avez vraiment des chargeurs de classe ?