java - Spring Boot 与 Web 服务器内存消耗

标签 java spring spring-boot

如果我在网络服务器(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 应用程序:

  1. 通过独立容器
  2. package it as a WAR并在您选择的容器中运行它

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

关于java - Spring Boot 与 Web 服务器内存消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35026240/

相关文章:

spring-boot - 部署到独立的 Apache Tomcat Web 服务器时,Spring Boot 2.1 Web 应用程序不起作用

spring-boot - Flyway 6 JavaMigrations 与 Spring Beans 的 native 依赖注入(inject)

java - 如何断言 Rest Client 异常?

java - 使用 mvvm 时如何在 zk 中更新进度表

java - 手工编码的 GUI - Java

java - gradle with openjdk 14 不支持的类文件主要版本 58

java - Spring Batch 中的 MapReduce/聚合操作

java - Spring Data @Query 使用 VARCHAR 而不是 NVARCHAR

java - 如何选择合适的spring、struts和hibernate版本,有什么区别?

java - Spring AOP代理使用