Spring Boot内存消耗增加到超过-Xmx选项

我注意到Spring Boot" title="Spring Boot">Spring Boot应用程序不遵守通过Xmx选项设置的内存量。例如:java -Xss64m -Xmx64m -jar test.jar

我还在控制台上打印了启动时应用程序实际使用的内存量,并显示:最大内存:61M

long maxBytes = Runtime.getRuntime().maxMemory();

System.out.println("Max memory: " + maxBytes / 1024 / 1024 + "M");

当我在访问任何网页之前打开Windows进程时,显示为+ -105M,那么Java怎么说61M?

访问任何网页后,它从+ -125M变为+ -135M。为什么会有这样的增加?它应该提供“

java.lang.OutOfMemoryError:PermGen空间”,但不要以这种方式增加。

如果许多应用程序可能会耗尽服务器上的内存,这让我感到担忧。顺便说一句,我正在使用Java 1.8_45

回答:

监视Spring Boot应用程序后,我发现了一些可能的原因,例如:

  1. http线程数(默认情况下,Undertow开始于大约50个线程,但是您可以通过属性增加/减少所需的线程数)
  2. 通过JNI访问本机例程(.dll,.so)
  3. 静态变量
  4. 缓存的使用(内存缓存,ehcache等)
  5. 如果VM是32位或64位,则64位会使用更多的内存来运行同一应用程序,因此,如果您不需要大于1.5GB的堆,请使应用程序的运行时间保持在32位以上以节省内存。

以上是 Spring Boot内存消耗增加到超过-Xmx选项 的全部内容, 来源链接: utcz.com/qa/430632.html

回到顶部