
Envoyé par
yashiro
Merci de tes remarques tchize_, seulement, l'idée n'est pas d'instancier des classes, mais d'analyser via l'introspection la structure des classes du classpath pour en déceler celles qui me concernent.
J'ai jamais dit dans ma description que t'allais les instancier, j'ai bien parlé de l'initialisation des classes, qui sera inévitable si tu fais de l'introspection dessus
Cette opération se fera de façon ponctuelle pour obtenir la liste des méthodes surveillées et cela une seule fois.
Un fois chargées par le classloader, les classes y restent, pas de retour en arrière possible. Encombrement de mémoire garanti si ton user ne liste pas correctement tous les jar à exclure (et de ce coté là, il aurait plus vite fait de lister les jar à inclure!)
Mais je rappelle que le but n'est pas d'instancier les classes, mais plutôt d'en analyser la structure via l'introspection.
Donc chaque classe va être initialisé c'est inévitable. Ca veux dire que leur code sera chargé en mémoire, que tous les champs et blocs statiques seront initialisés. Ca aura pour conséquence l'initialisation de nombreuses classes en cascade utilisées par des champs statique. Je pense par exemple au
private static Logger log = Logger.getLogger(MaClasse.class);
présent dans de nombreuses classes. C'est plein de loggers inutiles que tu va instancier et qui vont rester en mémoire, en plus du bytecode.
Partager