我继承了一个最初使用SpringBoot 1.3 (嵌入式Tomcat)运行的SpringBoot应用程序,它使用java -jar project.war命令启动应用程序。
由于我们已经升级到Spring 1.4,我们注意到与在IDE中运行应用程序()相比,启动它要慢得多,并且在搜索时具有更大的延迟。
一个很好的例子就是搜索"SMITH“。当我们在IDE中运行应用程序时,搜索大约需要5-6秒。使用--完全相同的代码库、嵌入式服务器配置和主机--在开始使用java -jar project.war时搜索“SMITH”需要14秒。
我们对应用程序进行了向上、向下和向后的描述,但仍然无法理解为什么它在我们的IDE中运行得那么快。
为了解决上述问题,我们必须做以下工作:
java -classpath "lib\:classes\:lib\*.jar" my.package.Main为什么这两个命令行特性有这么大的差别?为Java提供类路径真的能提高性能吗?
=========================================================================编辑:我用Spring归档了https://github.com/spring-projects/spring-boot/issues/8046,这基本上是从这里剪切和粘贴的
编辑2:如果您遇到了这个问题,并且可以共享您的代码,请使用Spring (使用上面的链接);我的公司已经锁定了他们的环境。
发布于 2017-01-19 23:25:05
找到了春季github专刊。看起来打包归档总是比较慢(我怀疑因为它在运行之前需要爆炸存档),但是WAR归档应该定义文档根,而JAR则不是,这在很大程度上解释了性能差异。还有关于JAR和WAR之间的区别的这个StackOverflow问题,其中还包含了似乎支持这一点的链接。
不能百分之百肯定这是答案,但希望它至少能让其他人走上正轨。
https://stackoverflow.com/questions/41752784
复制相似问题