Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导与Web服务器内存消耗_Java_Spring_Spring Boot - Fatal编程技术网

Java Spring引导与Web服务器内存消耗

Java Spring引导与Web服务器内存消耗,java,spring,spring-boot,Java,Spring,Spring Boot,如果我在web服务器(Tomcat,Undertow)中设置一个已建立的内存消耗,例如-Xms 1024m-Xmx 1024m,JVM仍然可以通过缓冲区、线程和本机例程等因素来增加内存消耗。这意味着1024m将不会是所使用的最大内存,我可能会看到S.O.中运行的进程远远不止这些 使用Spring Boot应用程序,每个jar都将有自己的web服务器,因此在本例中,如果我在java执行中没有设置任何-Xms/-Xmx,它将从该S.O中的JVM获得默认值 所以,我的疑问是,如果我有多个Spring

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

使用Spring Boot应用程序,每个jar都将有自己的web服务器,因此在本例中,如果我在java执行中没有设置任何-Xms/-Xmx,它将从该S.O中的JVM获得默认值

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


内存问题也适用于CPU和磁盘使用情况,Spring Boot是否需要更多的系统资源才能运行?

您的帖子中不清楚您是否在比较Spring和非Spring应用程序,但我假设是这样

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

如果考虑Spring Bug实例,您将看到可以用两种方式运行Spring Booad Web应用程序:

  • 通过一个独立的容器
  • 并在您选择的容器中运行

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

    是的,我比较了两个Spring应用程序,第一个打包到WAR中,部署在Tomcat中,另一个作为独立的Spring Boot应用程序运行,嵌入Tomcat。Ok。我的帖子涵盖了这两种情况,但我的问题是,在服务器耗尽之前,我需要多少资源(cpu/内存)?我知道单个容器比多个容器要少,同时我们也不能认为拆分1024m可以是10个100m的Spring Boot容器。首先,这取决于有多少资源可用。然后,还将讨论应用程序本身。如果不进行一些分析,就无法回答此问题。您可以从JavaVisualVM和JavaMissionControl开始(这两个版本都与最近的JDK一起提供)。简言之,我们是否可以认为将所有相同的WAR拆分为许多独立的Spring Boot应用程序将比只在一个Tomcat服务器上运行更为繁重?