Récupération de l'ID de processus dans un programme Java générique
Obtenir l'ID de processus (PID) associé à un programme Java en cours d'exécution a été un défi persistant pour les développeurs recherchant une solution indépendante de la plate-forme. Bien qu'il existe des solutions de contournement spécifiques à la plate-forme, elles n'ont pas la généralité souhaitée.
L'approche RuntimeMXBean
La solution la plus largement adoptée introduit la classe ManagementFactory et sa méthode getRuntimeMXBean(). Cette ligne donne généralement un nom ressemblant à "12345@hostname", où 12345 représente le PID.
Cependant, il est crucial de noter que cette approche repose sur des subtilités non documentées et n'est pas garantie de fournir des résultats cohérents dans toutes les implémentations JVM. . En fait, la documentation Java elle-même prévient explicitement que le nom renvoyé peut être arbitraire, soumis aux conventions spécifiques à la plate-forme :
Renvoie le nom représentant la machine virtuelle Java en cours d'exécution. La chaîne de nom renvoyée peut être n'importe quelle chaîne arbitraire et une implémentation de machine virtuelle Java peut choisir d'incorporer des informations utiles spécifiques à la plate-forme dans la chaîne de nom renvoyée. Chaque machine virtuelle en cours d'exécution peut avoir un nom différent.
API de processus Java 9
Introduite dans Java 9, l'API ProcessHandle offre une alternative plus directe et standardisée pour récupérer le PID :
long pid = ProcessHandle.current().pid();
Cette approche fournit une méthode fiable et indépendante de la plate-forme pour accéder à l'ID de processus dans les versions Java modernes, éliminant les complexités associées à l'approche RuntimeMXBean.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!