2009-05-03 7 views
38

Existe-t-il un moyen de connaître l'heure depuis le démarrage de la machine virtuelle Java? Bien sûr, hormis le démarrage d'une minuterie quelque part vers le début de main, parce que dans mon scénario j'écris le code de la bibliothèque et l'exigence que quelque chose soit appelé immédiatement après le démarrage est un fardeau trop lourd.depuis le démarrage de la machine virtuelle Java

Répondre

61

Utilisez cet extrait:

long jvmUpTime = ManagementFactory.getRuntimeMXBean().getUptime(); 

ou:

long jvmStartTime = ManagementFactory.getRuntimeMXBean().getStartTime(); 

Ceci est la bonnemoyen de récupérer JVM en temps.

Pour plus d'informations voir http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/RuntimeMXBean.html

+2

Notez qu'il renvoie une valeur en millisecondes, pas secondes. –

10

Vous pouvez obtenir le temps de démarrage de la machine virtuelle Java dans le code suivant:

import java.lang.management.ManagementFactory; 
    import java.lang.management.RuntimeMXBean; 
    ... 
    RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean(); 
    long uptimeInMillis = runtimeMXBean.getUptime(); 

Voir plus sont http://java.sun.com/javase/6/docs/api/java/lang/management/RuntimeMXBean.html

2

A partir de Java 5, vous pouvez utiliser JMX pour le savoir. Vérifiez "Using the platform MBeanserver" pour plus de détails. Le bean que vous recherchez est le bean appelé "java.lang: type = Runtime". L'attribut StartTime vous indique l'heure à laquelle la machine virtuelle Java a été démarrée et l'attribut Uptime vous indique le temps de fonctionnement de la machine virtuelle Java.

Vous pouvez obtenir une référence au bean d'exécution en exécutant ce code: ManagementFactory.getRuntimeMXBean();

0

Peut-être utile de mentionner que si vous ne voulez pas écrire un code heurtons jconsole à partir du répertoire bin java et cliquez sur VM Résumé et voir les valeurs de temps Uptime et Process CPU.

2

si votre programme en cours d'exécution jvm sous Linux, vous pouvez voir l'startTime utiliser ps

ps -p <pid> -o stime,etime 
Questions connexes