2009-05-03 7 views
38

C'è un modo per scoprire il tempo da quando è iniziata la JVM?tempo trascorso da JVM

Naturalmente, altro che iniziare un timer da qualche parte vicino all'inizio della main, perché nel mio scenario Sto scrivendo il codice della libreria e il requisito che qualcosa chiamato immediatamente dopo l'avvio è un troppo gravoso.

risposta

61

utilizzare questo frammento:

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

o:

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

Questa è la corretta modo di recuperare JVM up-tempo.

Per maggiori informazioni visita http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/RuntimeMXBean.html

+2

Nota che restituisce un valore in millisecondi, non secondi. –

2

A partire da Java 5, è possibile utilizzare JMX per scoprirlo. Seleziona "Using the platform MBeanserver" per scoprire ulteriori dettagli. Il bean che stai cercando è il bean chiamato "java.lang: type = Runtime". L'attributo StartTime ti dà il tempo di avvio della JVM e l'attributo Uptime ti dice il tempo di attività della JVM.

È possibile ottenere un riferimento al bean di runtime eseguendo questo codice: ManagementFactory.getRuntimeMXBean();

0

Forse la pena ricordare che, se non si vuole scrivere alcun codice correre su jconsole dalla directory bin java e fare clic su VM Sommario e vedere i valori di tempo della CPU Uptime e Process.

2

se il programma JVM in esecuzione in Linux, è possibile visualizzare la startTime utilizzare ps

ps -p <pid> -o stime,etime