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

Is there any way to know the load time for a java application?

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

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

有什么办法可以得到吗?

谢谢。

Spring 启动日志格式的启动时间:

在 {time} 秒后启动了 {applicationName}(JVM 运行 for {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);
  }
}