提问者:小点点

Spring Boot与Web服务器内存消耗


如果我在web服务器(Tomcat,Undertow)中设置一个已建立的内存消耗,如-Xms 1024m-Xmx 1024m,JVM仍然可以通过缓冲区、线程和本机例程的因素来增加内存消耗。这意味着1024米将不是所使用的最大内存,我可能会在S.O.中看到一个运行更多内存的进程。

有了Spring Boot应用程序,每个jar都将有自己的web服务器,所以在这种情况下,如果我在java执行中不设置任何-Xms/-Xmx,它将从该so中的JVM中获得默认值。

所以,我的疑问是,如果我有多个Spring Boot应用程序运行在同一个服务器上,难道我不应该有一个比有几个WAR在里面的单个web服务器更大的内存消耗吗?

内存问题也适用于CPU和磁盘的使用,Spring Boot需要更多的系统资源来运行吗?


共1个答案

匿名用户

从您的文章中还不清楚您是否在比较Spring和非Spring应用程序,但我认为情况确实如此。

Spring没有特定的系统资源需求。通常,当您在容器中运行Spring应用程序时,您可能会期望(稍微)更高的资源消耗,因为框架加载了更多的类,并执行了一些如果您根本不使用Spring就可以避免的处理。

如果您考虑一下Spring Boot的案例,您会发现您可以用两种方式运行Spring Boot web应用程序:

  1. 通过独立容器
  2. 将其打包为WAR并在您选择的容器中运行

在第一种情况下,如果有多个应用程序,您将需要更多的资源,因为将有多个容器在运行(每个Spring Boot应用程序一个)。在第二种情况下,您需要更少的资源,因为所有应用程序都合并在一个容器中。最后一个考虑因素更多的是如何部署,而不是Spring或Spring Boot的内在属性。