Je veux dire que nous avons une classe qui est déjà chargée dans JVM. et dans une autre méthode, nous essayons inconsciemment de charger cette même classe, donc dans cette situation, que se passe-t-il? c'est-à-dire qu'il y aura une erreur ou une exception disant que c'est déjà chargé. Si ce n'est pas le cas, alors il est possible que nous puissions avoir une classe modifiée avec quelques fonctionnalités supplémentaires et la charger chaque fois que cela est nécessaire pour le déploiement à chaud.Que se passe-t-il si nous chargeons à nouveau une classe déjà chargée?
Répondre
Rien ne se passe. La machine virtuelle vérifie d'abord si la classe est chargée et la charge uniquement si elle ne l'est pas. Sinon, il renvoie la classe déjà chargée.
De ClassLoader.loadClass(..)
.
// First, check if the class has already been loaded
Class c = findLoadedClass(name);
if (c == null) {
...
}
(Vous pouvez vérifier this article sur de nombreux détails sur le chargement des classes Bien qu'il ne soit pas directement liée (dans son ensemble) à votre question, il est une bonne source de réponses aux questions comme le vôtre)
Si vous cherchez à réutiliser une classe pendant qu'elle est chargée, vous devriez vérifier le motif de la classe Singleton. Si vous chargez à nouveau la même classe alors vous allez avoir plusieurs instances de la classe, aucune erreur ne se produira.
Il ne peut y avoir qu'une seule classe par chargeur de classe, ce qui n'est théoriquement pas possible. Vous pouvez réellement tester cela en appelant à mettre des instructions S.o.p dans les blocs d'initialisation statiques. Ces blocs ne sont exécutés qu'une seule fois lorsque la classe est chargée.
Modifier
Une classe d'un nom donné complet, corrigé selon le commentaire
- 1. Vérifiez si une bibliothèque DLL est déjà chargée? (Java)
- 2. Comment chargeons-nous nos expressions symboliques dans le matlab?
- 3. Bibliothèque native déjà chargée dans un autre chargeur de classe
- 4. Comment faire pour jQuery glisser une fois que la page a déjà été chargée
- 5. Que se passera-t-il si une application est assez grande pour être chargée dans la mémoire RAM disponible?
- 6. Est-il possible d'avoir une catégorie Objective-C chargée seulement si la méthode n'existe pas déjà?
- 7. Comment puis-je interroger une donnée déjà chargée dans EF?
- 8. RegisterClass échoué: classe déjà
- 9. Comment supprimer une classe chargée de classloader?
- 10. Comment vérifier si une image est chargée dans silverlight
- 11. Comment sélectionner un élément par nom de classe, déjà chargée dans DOM
- 12. Nouveau projet - devrais-je apprendre une nouvelle langue ou utiliser une langue que je connais déjà
- 13. Comment ajouter des mots à une grammaire déjà chargée à l'aide System.Speech et SAPI 5.3
- 14. Que se passe-t-il si un JAR est mis à jour alors qu'il est encore utilisé par une JVM?
- 15. Si j'étire une classe statique en PHP, et que la classe parent fait référence à "self ::", est-ce que cela se référera à soi dans la classe étendue?
- 16. Si nous ne pouvons pas lier une commande de MouseBinding, que devons-nous faire?
- 17. Voir si une application a une DLL du GAC chargée
- 18. Pouvons-nous contribuer un nouveau plugin.xml à ExtensionRegistry
- 19. pouvons-nous revenir à l'application sans taper à nouveau?
- 20. Dans quels cas une nouvelle classe sera-t-elle chargée?
- 21. Vérifier si une relation d'ami existe déjà
- 22. Est-ce que l'optimisation de hotspot (sun-jvm) a lieu plusieurs fois, si une classe est chargée par différents chargeurs de classe?
- 23. Vérifiez si l'application BlackBerry est déjà prévue
- 24. Utilisation de TCollection avec une classe déjà définie
- 25. Classe déjà incluse
- 26. Savoir si les fenêtres WPF ont déjà été chargées (événement Loaded déjà déclenché)
- 27. Devrions-nous utiliser des méthodes d'interface si nous le pouvons?
- 28. Quand devrions-nous créer une classe statique?
- 29. Git déjà à jour à moins que je ne réinitialise
- 30. Actionscript 2: Une classe chargée dans une classe parent, obtenir les variables parent
[d'un nom donné]? –