如果我在网络服务器(Tomcat、Undertow)中设置了一个既定的内存消耗,例如-Xms 1024m -Xmx 1024m,JVM 仍然可以通过缓冲区、线程和 native 例程。这意味着 1024m 不会是使用的最大内存,我可能会看到 S.O.运行的进程远不止于此。
使用 Spring Boot 应用程序,每个 jar 都有自己的 Web 服务器,所以在这种情况下,如果我在 java 执行中没有设置任何 -Xms/-Xmx,它将从 JVM 中获取默认值S.O.
所以,我的疑问是,如果我在同一台服务器上运行多个 Spring Boot 应用程序,我的内存消耗难道不应该比只拥有一个内部有多个 WAR 的 Web 服务器更大吗?
内存问题也适用于 CPU 和磁盘使用情况,Spring Boot 是否需要更多系统资源才能运行?
最佳答案
如果您比较 Spring 与非 Spring 应用程序,从您的帖子中不清楚,但我假设是这种情况。
Spring does not have特定的系统资源要求。 通常,当您在容器中运行 Spring 应用程序时,您可能会(稍微)增加资源消耗,因为框架会加载更多类并执行一些如果您根本不使用 Spring 就可以避免的处理。
如果考虑 Spring Boot 的情况,您会发现可以通过两种方式运行 Spring Boot Web 应用程序:
- 通过独立容器
- package it as a WAR并在您选择的容器中运行它
在第一种情况下,如果有多个应用程序,您将需要更多资源,因为将有多个容器在运行(每个 Spring Boot 应用程序一个)。在第二种情况下,您将需要更少,因为所有应用程序都整合在一个容器中。最后一个考虑更多的是你如何部署的问题,而不是 Spring 或 Spring Boot 的固有属性。
关于java - Spring Boot 与 Web 服务器内存消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35026240/