Il est assez simple d'effectuer une récupération de place sur une machine virtuelle Java en cours d'exécution en utilisant les outils jconsole
ou jvisualvm
fournis avec le JDK, et il est très agréable de pouvoir écrire des statistiques à l'aide de la commande jstat
sur un système distant accès shell mais pas d'accès X11 ni d'accès RMI.Existe-t-il un outil Java scriptable qui peut effectuer une récupération de place sur une machine virtuelle Java en cours d'exécution?
Cependant, je n'ai trouvé aucun outil dans le JDK qui me permet d'effectuer un nettoyage de place sur un processus en cours que je peux invoquer à partir d'une session SSH sans un environnement DISPLAY.
Y a-t-il vraiment un tel outil de ligne de commande dans le JDK mais seulement des outils GUI qui ont le bouton "GC", ou est-ce que je manque quelque chose?
edit: Je sais que je pourrais écrire un tel outil. Et oui, je sais que la JVM fait GC quand elle doit le faire, alors répéter ce mantra n'aidera en rien. L'application tourne bien, et je veux simplement la pousser à voir combien de mémoire elle utilise sans la mettre hors ligne (pas de redémarrage de la JVM existante) ou déployer du nouveau code dans l'environnement où elle fonctionne parce que ce n'est pas quelque chose peut faire arriver à court terme. Faire des enquêtes comme ceci est une grande raison pour laquelle il existe des outils tels que jconsole
et jvisualvm
qui exécuteront GC lorsque vous cliquez sur le bouton GUI, mais ce serait bien de ne pas avoir à essayer de sauter à travers les arceaux X-forwarding juste pour effectuer une tâche simple .
Quelque chose dans le JDK est ce que je suis après. Je pourrais facilement écrire un tel outil, mais cela prendrait beaucoup de temps à se déployer dans cet environnement particulier. – jbindel