Вопрос
Есть ли способ узнать время с момента запуска JVM?
Конечно, кроме запуска таймера где-то в начале main
, потому что в моем сценарии я пишу код библиотеки и требование, чтобы что-то вызывалось сразу после запуска, слишком обременительно.
Решение
Используйте этот фрагмент:
long jvmUpTime = ManagementFactory.getRuntimeMXBean().getUptime();
или:
long jvmStartTime = ManagementFactory.getRuntimeMXBean().getStartTime();
Это правильный способ получения информации о времени работы JVM.
Для получения дополнительной информации см. http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/RuntimeMXBean.html
Другие советы
Вы можете узнать время запуска JVM в следующем коде:
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
...
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
long uptimeInMillis = runtimeMXBean.getUptime();
Подробнее смотрите http: // java .sun.com / JavaSE / 6 / документы / API / Java / языки / управление / RuntimeMXBean.html р>
если ваша jvm-программа работает в linux, вы можете просмотреть startTime, используя ps
ps -p <pid> -o stime,etime
Начиная с Java 5, вы можете использовать JMX, чтобы это выяснить. Проверьте " использование платформы MBeanserver " ; чтобы узнать больше деталей. Bean-компонент, который вы ищете, называется "java.lang: type = Runtime". Атрибут StartTime показывает время, когда JVM была запущена, а атрибут Uptime указывает время работы JVM.
Вы можете получить ссылку на компонент времени выполнения, выполнив этот код: <Код> ManagementFactory.getRuntimeMXBean (); код> р>
Возможно, стоит упомянуть, что если вы не хотите писать какой-либо код, запустите jconsole из каталога java bin, нажмите Сводная информация о виртуальной машине и посмотрите значения времени работы и времени ЦП.