分析弹簧容器以了解如何优化其启动时间的最佳方法是什么?

ege*_*ari 17 java optimization performance spring profiling

我有一个相当大的应用程序,Spring启动时间大约是20秒.对于生产用途,这很好,但对于开发来说,这是一个很大的痛苦.

什么是一个很好的分析工具或方法,可以准确地提供我需要的信息,以弄清楚这么长的时间?也许这是我可以优化的东西?

我的应用程序是一个相当典型的spring/hibernate Web应用程序.大概有50个数据库表和几百个bean(比如200-300 ......我没算数).有一些@Configurable bean.大量的组件扫描.我也在使用Spring Security.

我用log4j做了一些原始的分析 - 只是在INFO设置.以下是一些需要花费一些时间的事情:

  • INFO DefaultListableBeanFactory:555 - 预实例化单例 - 2秒
  • INFO SessionFactoryImpl:202 - 构建会话工厂 - 2秒
  • INFO HibernateTransactionManager:415 - 使用Hibernate SessionFactory的DataSource [com.mchange.v2.c3p0.ComboPooledDataSource ......]进行HibernateTransactionManager - 7秒

有几件事最多需要0.5到1秒,但这3件是最大的.

lal*_*lit -1

您也可以使用 Spring Insight。