Tomcat 8.5 Wildfly 15 Java 8 OutOfMemoryError和非常慢的启动

问题描述 投票:1回答:1

启动@Autowrid,Maven项目与Spring 4,大约:800 ManegedBeans Spring,900 Services,1000 @Component和1000 @Repository,启动应用程序trhow a OutOfMemoryError。我在Tomcat和Wildfly中增加了参数-Xms1024m -Xmx4g,在应用程序中我在default-lazy-init = "false"中添加了applicationContext.xml参数,并且应用程序启动时费用很高。我想知道删除是否有任何好处

@Autowired 
private AnyService anyService;

从所有类和使用

public void execute() {
   AnyService anyService = (AnyService)applicationContext.getBean(AnyService.class);
   anyService.execute();
}

在方法内。使用局部变量而不是实例可以优化启动吗?为GC带来一些好处?调用applicationContext.getBean(AnyService.class)可能会恶化方法的性能?

java spring maven out-of-memory wildfly
1个回答
-1
投票

OutOfMemoryError和慢启动是两个不同的问题。我认为您不必删除@Autowired注释。

首先,您应该确定哪个bean导致缓慢加载(例如数据库连接),并在该类中添加@Lazy,您可以参考这篇文章spring-lazy-annotation-use-cases。而一些豆应首先加载Make sure a particular bean gets initialized first

其次,使用Spring XML配置而不是组件扫描或限制组件扫描范围可能会有所帮助。确保仅使用应用程序中所需的最低组件

© www.soinside.com 2019 - 2024. All rights reserved.