Existe-t-il un moyen de juger si une classe a été chargée dans jvm? À mon avis, je pense que le chemin est findClass
, n'est-ce pas?Y at-il un moyen de juger si une classe a été chargée dans jvm?
Répondre
OK, donc je n'ai pas fait cela. Mais il semble que ce serait possible via getAllLoadedClasses()
dans le Instrumentation API.
Mais alors vous devez toujours démarrer la JVM avec votre agent
.
En fonction de la JVM, vous pouvez charger les agents après le démarrage de façon dynamique, par ex. via l'API Attach. À la fin de [cette réponse] (http://stackoverflow.com/a/19912148/2711488) est un exemple de programme qui s'attache à sa propre JVM pour se charger en tant qu'agent pour finalement avoir les mains sur l'API 'Instrumentation'. – Holger
Activez la journalisation du chargeur de classe avec -verbose:class
et lisez le journal.
que se passe-t-il si vous avez déjà démarré la JVM et qu'elle est en cours d'exécution? – Eugene
Vous pouvez utiliser l'outil jdk, tel que JConsole.
Cela dépend de vos besoins. Est-ce lorsque la classe est recherchée, chargée via un code octet et qu'elle a donc un objet '.class', ou quand elle est initialisée? –
Peut-être qu'il est chargé, puis est supprimé .So je pense que je ne peux pas juger de la classe d'objet, comme un mécanisme aop. – flower
La vraie question est probablement: pourquoi pensez-vous que cela a de l'importance? En d'autres termes: quel est le problème que vous avez l'intention de résoudre en faisant un tel jugement? – GhostCat