簡體   English   中英

Tomcat 8.5 Wildfly 15 Java 8 OutOfMemoryError和啟動速度非常慢

[英]Tomcat 8.5 Wildfly 15 Java 8 OutOfMemoryError and very slow startup

啟用后@Autowrid 800 ManegedBeans春天,900個服務,1000:,Maven項目與Spring 4,在大約@Component和1000 @Repository ,啟動應用程序trhow一個OutOfMemoryError 我增加了參數-Xms1024m -Xmx4g在Tomcat和Wildfly,在我添加了應用程序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)可能會惡化方法的性能嗎?

OutOfMemoryError和啟動緩慢是兩個不同的問題。 我認為您不必刪除@Autowired注釋。

首先,您應該確定哪個bean導致加載緩慢(例如db連接),並在該類中添加@Lazy,您可以參考本文spring-lazy-annotation-use-cases 並且應該先加載一些bean 確保首先初始化特定的bean

其次,使用Spring XML配置代替組件掃描或限制組件掃描范圍可能會有所幫助。 確保僅使用應用程序的最低要求組件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM