Есть ли способ узнать время загрузки Java-приложения? - PullRequest
3 голосов
/ 18 мая 2019

Я пытаюсь сравнить производительность SpringBoot и Micronaut.

У меня есть несколько приложений, реализованных на обеих платформах, и я могу получить некоторую информацию о JVM с Micrometer, но информацию о времени, которое требуется каждой из этих платформзагрузить с нуля и начать работать - это то, чего мне не хватает.

Есть ли способ получить его?

Спасибо.

1 Ответ

2 голосов
/ 18 мая 2019

Время загрузки журналов весенней загрузки в формате:

Запущено {applicationName} через {время} секунд (JVM работает в течение {jvmTime})

, например

2019-05-18 20:50:07.099  INFO 6904 --- [           main] c.e.demo.DemoApplication     : Started DemoApplication in 2.156 seconds (JVM running for 3.164)

Если вы хотите иметь программный доступ ко времени запуска в вашем приложении, вы можете запустить JVM во время ApplicationStartedEvent:

@Component
public class StartupListener {

  @EventListener
  public void onStartup(ApplicationStartedEvent event) {
    double startupTime = ManagementFactory.getRuntimeMXBean().getUptime() / 1000.0;
    System.out.println("Application started in: " + startupTime);
  }
}

Просто чтобы завершить ответ частью Микронавта:

@Singleton
@Requires(notEnv = Environment.TEST)
@Slf4j
public class InitialEventListener implements ApplicationEventListener<ServiceStartedEvent> {

  @Getter
  private long currentTimeMillis;

  @Async
  @Override
  public void onApplicationEvent(ServiceStartedEvent event) {
    currentTimeMillis = System.currentTimeMillis();
    log.info("ServiceStartedEvent at " + currentTimeMillis + ":" + event);
  }
}
...