Comment surveiller l’utilisation du CPU, de la mémoire et du disque de votre ordinateur en Java

En tant que développeurs, comprendre la performance du système est crucial pour créer des applications efficaces. Si vous travaillez en Java et devez surveiller l’utilisation du CPU, de la mémoire et du disque de votre système, vous pourriez trouver cette tâche un peu décourageante. Cet article de blog vise à fournir une approche claire et structurée pour vous aider à suivre efficacement ces informations vitales d’une manière multi-plateforme, évitant les complications spécifiques aux systèmes d’exploitation.

Le problème : Pourquoi surveiller les ressources système ?

Surveiller les ressources système telles que le CPU, la mémoire et l’espace disque est crucial pour plusieurs raisons, y compris :

  • Optimisation des performances : Identifier les goulets d’étranglement et optimiser les performances des applications.
  • Gestion des ressources : Comprendre combien des ressources de votre système votre application utilise.
  • Prévenir les pannes : Suivre la santé de votre système pour éviter les plantages d’applications dus à l’épuisement des ressources.

Dans ce guide, nous vous montrerons comment rassembler ces métriques en utilisant Java, sans dépendre de commandes externes ou de JNI (Java Native Interface).

Aperçu de la solution

Pour surveiller l’utilisation du CPU, de la mémoire et du disque de votre ordinateur en Java, vous pouvez utiliser de manière efficace l’API SIGAR ou les fonctionnalités intégrées de OperatingSystemMXBean. Ci-dessous, nous décomposons comment utiliser ces outils pour obtenir l’information dont vous avez besoin.

Utilisation de l’API SIGAR

L’API SIGAR (System Information Gatherer And Reporter) est un outil puissant qui vous permet d’obtenir une vaste gamme de métriques système. Voici pourquoi elle est bénéfique :

  • Robustesse : SIGAR est stable et bien supporté.
  • Multi-plateforme : Fonctionne sur Linux, Mac et Windows.
  • Open Source : Initialement sous GPL, elle est maintenant sous licence Apache 2.0, compatible avec l’utilisation commerciale.

Pour commencer avec SIGAR

  1. Configuration : Ajoutez la bibliothèque SIGAR à votre projet. Vous pouvez trouver la bibliothèque ici.

  2. Utilisation : Une fois configuré, vous pouvez appeler les méthodes de l’API pour récupérer des informations sur le CPU, la mémoire et le disque.

    Sigar sigar = new Sigar();
    double cpuUsage = sigar.getCpuPerc().getCombined() * 100; 
    long totalMemory = sigar.getMem().getTotal();
    long freeMemory = sigar.getMem().getFree();
    long totalDiskSpace = sigar.getFileSystemUsage("/").getTotal();
    long freeDiskSpace = sigar.getFileSystemUsage("/").getFree();
    

Utilisation des fonctionnalités intégrées de Java

Pour une solution qui ne nécessite pas de bibliothèques externes, vous pouvez utiliser la classe intégrée OperatingSystemMXBean de Java ainsi que la classe File pour mesurer les métriques système.

  1. Obtenir l’utilisation du CPU :

    OperatingSystemMXBean osBean = ManagementFactory.getOperatingSystemMXBean();
    double cpuUsage = osBean.getSystemLoadAverage() / osBean.getAvailableProcessors();
    
  2. Obtenir l’utilisation de la mémoire :

    long totalMemory = osBean.getTotalPhysicalMemorySize();
    long freeMemory = osBean.getFreePhysicalMemorySize();
    
  3. Obtenir l’utilisation du disque :

    File file = new File("/");
    long totalDiskSpace = file.getTotalSpace();
    long freeDiskSpace = file.getUsableSpace();
    

Limitations à garder à l’esprit

  • Version de Java : Les méthodes OperatingSystemMXBean sont disponibles à partir de Java 6.
  • Variabilité de la plateforme : Certaines méthodes peuvent se comporter différemment selon les plateformes, par exemple, getSystemLoadAverage() peut retourner -1 sous Windows.

Conclusion

En utilisant des bibliothèques comme SIGAR ou des classes intégrées dans Java, vous pouvez surveiller efficacement l’utilisation du CPU, de la mémoire et du disque de votre ordinateur sur différents systèmes d’exploitation. Ces outils simplifient non seulement le processus, mais augmentent également la fiabilité de vos applications.

Expérimentez avec les deux méthodes pour déterminer celle qui convient le mieux à vos besoins, et assurez-vous que vos applications fonctionnent de manière aussi efficace que possible. Bon codage !