Domanda
C'è un modo per scoprire l'ora dall'avvio della JVM?
Naturalmente, a parte l'avvio di un timer da qualche parte vicino all'inizio di main
, perché nel mio scenario sto scrivendo il codice della libreria e il requisito che qualcosa da chiamare immediatamente dopo l'avvio è troppo oneroso.
Soluzione
Usa questo frammento:
long jvmUpTime = ManagementFactory.getRuntimeMXBean().getUptime();
o
long jvmStartTime = ManagementFactory.getRuntimeMXBean().getStartTime();
Questo è il modo corretto per recuperare l'uptime di JVM.
Per ulteriori informazioni, consultare http: //java.sun.com/j2se/1.5.0/docs/api/java/lang/management/RuntimeMXBean.html
Altri suggerimenti
È possibile ottenere l'ora di inizio della JVM nel seguente codice:
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
...
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
long uptimeInMillis = runtimeMXBean.getUptime();
Altre informazioni sono http: // java .sun.com / JavaSE / 6 / docs / api / java / lang / gestione / RuntimeMXBean.html
se il tuo programma jvm è in esecuzione su Linux, puoi visualizzare startTime usando ps
ps -p <pid> -o stime,etime
A partire da Java 5, è possibile utilizzare JMX per scoprirlo. Controlla " Uso della piattaforma MBeanserver " ; per scoprire maggiori dettagli. Il bean che stai cercando è il bean chiamato " java.lang: type = Runtime " ;. L'attributo StartTime indica l'ora in cui è stata avviata la JVM e l'attributo Uptime indica il tempo di attività della JVM.
È possibile ottenere un riferimento al bean Runtime eseguendo questo codice:
ManagementFactory.getRuntimeMXBean ();
Forse vale la pena ricordare che se non si desidera scrivere alcun codice, avviare jconsole dalla directory java bin e fare clic su Riepilogo VM e vedere i valori di tempo di CPU Uptime e Process.