105 votes

Comment vérifier l'utilisation du CPU et de la mémoire en Java ?

J'ai besoin de vérifier l'utilisation du CPU et de la mémoire pour le serveur en java, quelqu'un sait comment faire ?

0 votes

1 votes

7voto

Rich Adams Points 10378

Pour l'utilisation de la mémoire, la méthode suivante fonctionnera,

long total = Runtime.getRuntime().totalMemory();
long used  = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();

Pour l'utilisation du CPU, vous devrez utiliser une application externe pour le mesurer.

6voto

Telcontar Points 2329

Depuis Java 1.5, le JDK est livré avec un nouvel outil : JConsole qui peut vous montrer l'utilisation du CPU et de la mémoire de n'importe quelle JVM 1.5 ou ultérieure. Il peut faire des graphiques de ces paramètres, exporter vers CSV, montrer le nombre de classes chargées, le nombre d'instances, les deadlocks, les threads etc...

4voto

Bill K Points 32115

Si vous utilisez la solution runtime/totalMemory qui a été postée dans de nombreuses réponses ici (je l'ai beaucoup fait), assurez-vous de forcer deux garbage collections d'abord si vous voulez des résultats assez précis/consistants.

Pour des raisons d'efficacité, Java permet généralement aux déchets de remplir toute la mémoire avant de forcer une GC, et même dans ce cas, il ne s'agit généralement pas d'une GC complète, de sorte que vos résultats pour runtime.freeMemory() seront toujours quelque part entre la quantité "réelle" de mémoire libre et 0.

La première CG n'obtient pas tout, elle obtient la plupart des choses.

Le bon côté est que si vous faites juste l'appel freeMemory() vous obtiendrez un nombre qui est absolument inutile et varie largement, mais si vous faites 2 gc's d'abord c'est une jauge très fiable. Cela rend également la routine BEAUCOUP plus lente (en secondes, éventuellement).

3voto

moonshadow Points 28302

Java Temps d'exécution peut signaler l'utilisation de la mémoire de la JVM. Pour la consommation du CPU, vous devrez utiliser un utilitaire externe, comme top d'Unix ou le gestionnaire de processus de Windows.

2voto

blahspam Points 606

JConsole est un moyen simple de surveiller une application Java en cours d'exécution. Vous pouvez également utiliser un profileur pour obtenir des informations plus détaillées sur votre application. J'aime utiliser le NetBeans Profiler pour ça.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X