Ceci implique la JNI, mais il y a une licence (GPL) à partir de Hyperic appelé Sigar qui fournit des informations sur toutes les grandes plates-formes, ainsi qu'un tas d'autres OS dépendant de stats comme l'utilisation du disque. Il fonctionne à merveille pour nous.
getSystemLoadAverage() vous donne la valeur de plus de 1 minute de temps (actualise toutes les secondes) et donne à cette valeur pour l'ensemble du système d'exploitation. De plus en temps réel aperçu devrait être fait par le suivi de chaque thread séparément. Il est aussi Important de remarquer la surveillance de l'intervalle d'actualisation - le plus souvent, vous vérifiez la valeur, plus precice c'est à moment donné, et si vous le faites à chaque milliseconde, il est généralement de 0 ou 100 (ou plus selon le nombre de processeurs est là). Mais si nous permettons période (par exemple 1 seconde), nous obtenons avarage au cours de cette période de temps et nous obtenons plus instructif résultat. Aussi, il est important de noter, qu'il est très peu probable, qu'un seul thread occupe plus d'un CPU (core).
Après la mise en œuvre permet d'utiliser 3 méthodes:
getTotalUsage() - charge Totale par tous les threads dans la JVM
getAvarageUsagePerCPU() - Avarage de charge par le CPU (core)
getUsageByThread(Thread t) - charge Totale par thread spécifié
Sur linux, vous pouvez simplement lire le fichier /proc/loadavg, où les trois premières valeurs représentent les charges moyennes. Pour Windows, vous devez probablement tenir à JNI.
Sous Linux vous pouvez utiliser Runtime.exec() pour exécuter la commande “uptime” et d'évaluer la sortie. Je n'ai pas il ya une meilleure façon sous Linux, et je ne pense pas qu'il y a aussi “pratique” sous Windows.
Utiliser le
ManagementFactory
pour obtenir unOperatingSystemMXBean
et appelgetSystemLoadAverage()
.OriginalL'auteur Joachim Sauer
Ceci implique la JNI, mais il y a une licence (GPL) à partir de Hyperic appelé Sigar qui fournit des informations sur toutes les grandes plates-formes, ainsi qu'un tas d'autres OS dépendant de stats comme l'utilisation du disque. Il fonctionne à merveille pour nous.
OriginalL'auteur Alex Miller
getSystemLoadAverage() vous donne la valeur de plus de 1 minute de temps (actualise toutes les secondes) et donne à cette valeur pour l'ensemble du système d'exploitation. De plus en temps réel aperçu devrait être fait par le suivi de chaque thread séparément. Il est aussi Important de remarquer la surveillance de l'intervalle d'actualisation - le plus souvent, vous vérifiez la valeur, plus precice c'est à moment donné, et si vous le faites à chaque milliseconde, il est généralement de 0 ou 100 (ou plus selon le nombre de processeurs est là). Mais si nous permettons période (par exemple 1 seconde), nous obtenons avarage au cours de cette période de temps et nous obtenons plus instructif résultat. Aussi, il est important de noter, qu'il est très peu probable, qu'un seul thread occupe plus d'un CPU (core).
Après la mise en œuvre permet d'utiliser 3 méthodes:
getUsageByThread(Thread t) - charge Totale par thread spécifié
OriginalL'auteur Kaido Kalda
Sur linux, vous pouvez simplement lire le fichier /proc/loadavg, où les trois premières valeurs représentent les charges moyennes. Pour Windows, vous devez probablement tenir à JNI.
OriginalL'auteur welterde
Sous Linux vous pouvez utiliser Runtime.exec() pour exécuter la commande “uptime” et d'évaluer la sortie. Je n'ai pas il ya une meilleure façon sous Linux, et je ne pense pas qu'il y a aussi “pratique” sous Windows.
OriginalL'auteur Bombe
Si vous êtes à l'aide de la JRockit JVM vous pouvez utiliser JMAPI. Il travaille pour le JDK 1.4, 1.5 et 1.6.
OriginalL'auteur Kire Haglin