1

我目前正在尝试追查性能问题,我发现在从 ApplicationContext 请求 bean 的代码中花费了大量时间:

ApplicationContext.getBean(String beanName);

您是否知道是否可以在 Spring 中打开任何调试或日志信息,以便我可以看到从该调用实例化的所有对象以及创建它们的时间?

我一直在尝试使用 Yourkit 进行配置文件,但该操作总共只需要 1.4 秒,而且只在第一次调用时,所以 Yourkit 似乎在与这样的短暂的一次性调用作斗争。

这就是我沿着伐木路线前进的原因。

4

1 回答 1

3

Spring 使用 log4j,因此您可以将日志级别设置为调试并查看您得到的结果。会有很多输出。我建议不要将其记录到控制台 - 将其写入文件。

这个结论是怎么得出的?您是否使用 Visual VM 分析您的应用程序并安装了所有插件?

我敢打赌,应用程序上下文不是问题。如果在应用程序上下文中花费的时间很长,那么它应该只是在 Spring 读取和解析配置、实例化和连接 bean 时启动。完成后,成本将在应用程序的整个生命周期内摊销。对于大多数网络应用程序来说,这是启动成本,而不是反映用户在使用您的网站时的体验。

它更有可能出现在您的代码中。确保你没有因为没有采取全面的观点而被误导。

于 2013-06-07T12:21:48.010 回答