gpt4 book ai didi

java - Tomcat 8.5 Wildfly 15 Java 8 OutOfMemoryError 和启动速度非常慢

转载 作者:行者123 更新时间:2023-12-01 06:02:09 32 4
gpt4 key购买 nike

启用@Autowrid后,使用Spring 4的Maven项目大约:800个ManegedBeans Spring、900个Services、1000个@Component和1000个@Repository,启动应用程序发生 OutOfMemoryError。我在Tomcat和Wildfly中增加了参数-Xms1024m -Xmx4g,在应用程序中我在applicationContext.xml中添加了default-lazy-init = "false"参数 并且以巨大的成本应用程序正在启动。我想知道删除是否有任何好处

@Autowired 
private AnyService anyService;

来自所有类并使用

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

在方法中。使用局部变量代替实例是否可以优化启动?给GC带来一些好处?调用 applicationContext.getBean(AnyService.class) 可能会降低方法的性能?

最佳答案

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

首先要确定是哪个bean导致加载缓慢(例如db连接),并在该类上添加@Lazy,可以引用这篇文章spring-lazy-annotation-use-cases 。一些bean应该首先加载Make sure a particular bean gets initialized first

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

关于java - Tomcat 8.5 Wildfly 15 Java 8 OutOfMemoryError 和启动速度非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55209127/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com