有什么方法可以知道Java应用程序的加载时间吗?

时间:2019-05-18 12:54:07

标签: spring-boot micronaut micrometer

我正在尝试比较SpringBoot和Micronaut的性能。

我有两个框架都实现了一些应用程序,并且可以获得有关Micrometer的JVM的信息,但是我缺少有关每个框架需要从头开始加载并开始工作的时间的信息。

有没有办法得到它?

谢谢。

1 个答案:

答案 0 :(得分:2)

Spring Boot以以下格式记录启动时间:

在{time}秒内启动{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)

如果您希望以编程方式访问应用程序中的启动时间,则可以在ApplicationStartedEvent上运行JVM:

@Component
public class StartupListener {

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

只需完成Micronaut部分的答案即可

@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);
  }
}