如何减少Spring Boot的内存使用量?

我正在使用Spring Boot" title="Spring Boot">Spring Boot开发客户端应用程序。当运行spring

boot应用程序(使用完全可执行的jar)时,x64服务器的内存使用约为190M,x86服务器的内存使用约为110M。

我的jvm选项是(-Xmx64M -Xms64M -XX:MaxPermSize = 64M

-server),为什么在x64服务器中,内存使用量如此之大?如何将内存使用量减少到150M以下?

谢谢。

回答:

在这里玩游戏的时间不算太晚,但是我在Docker上的容器化Spring

Boot应用程序遇到了同样的问题。在最简单的具有单个控制器和嵌入式Tomcat的Spring

Boot应用程序上,您将获得的最低内存总量约为72M。投入Spring Data REST,Spring

Security和一些JPA实体,您的最低要求为200M-300M。通过使用以下JVM选项,您可以将一个简单的Spring

Boot应用程序总数降低到约72M。

-XX:+UseSerialGC this将与分配堆内存的线程而不是专用GC线程内联执行垃圾回收

-Xss512k此选项会将每个线程的堆栈内存限制为512KB,而不是默认的1MB

-XX:MaxRAM=72m This将限制JVM对堆和非堆托管内存的计算在此值的范围内。

除了上述JVM选项之外,您还可以在application.properties文件内部使用以下属性:

server.tomcat.max-threads = 1 这会将HTTP请求处理程序线程数限制为1(默认值为200)


这是一个使用上述限制和docker 参数docker stats运行 简单的Spring Boot应用程序的示例-m

72m。如果我降低的值低于此值,我将无法启动应用程序。

83ccc9b2156d: Mem Usage: 70.36MiB / 72MiB | Mem Percentage: 97.72%

在这里,您可以看到退出时所有本机和Java堆内存的明细。

Native Memory Tracking:

Total: reserved=1398681KB, committed=112996KB

- Java Heap (reserved=36864KB, committed=36260KB)

(mmap: reserved=36864KB, committed=36260KB)

- Class (reserved=1086709KB, committed=43381KB)

(classes #7548)

( instance classes #7049, array classes #499)

(malloc=1269KB #19354)

(mmap: reserved=1085440KB, committed=42112KB)

( Metadata: )

( reserved=36864KB, committed=36864KB)

( used=36161KB)

( free=703KB)

( waste=0KB =0.00%)

( Class space:)

( reserved=1048576KB, committed=5248KB)

( used=4801KB)

( free=447KB)

( waste=0KB =0.00%)

- Thread (reserved=9319KB, committed=938KB)

(thread #14)

(stack: reserved=9253KB, committed=872KB)

(malloc=50KB #74)

(arena=16KB #26)

- Code (reserved=248678KB, committed=15310KB)

(malloc=990KB #4592)

(mmap: reserved=247688KB, committed=14320KB)

- GC (reserved=400KB, committed=396KB)

(malloc=272KB #874)

(mmap: reserved=128KB, committed=124KB)

- Compiler (reserved=276KB, committed=276KB)

(malloc=17KB #409)

(arena=260KB #6)

- Internal (reserved=660KB, committed=660KB)

(malloc=620KB #1880)

(mmap: reserved=40KB, committed=40KB)

- Symbol (reserved=11174KB, committed=11174KB)

(malloc=8417KB #88784)

(arena=2757KB #1)

- Native Memory Tracking (reserved=1858KB, committed=1858KB)

(malloc=6KB #80)

(tracking overhead=1852KB)

- Arena Chunk (reserved=2583KB, committed=2583KB)

(malloc=2583KB)

- Logging (reserved=4KB, committed=4KB)

(malloc=4KB #179)

- Arguments (reserved=17KB, committed=17KB)

(malloc=17KB #470)

- Module (reserved=137KB, committed=137KB)

(malloc=137KB #1616)

也不要指望从中获得任何不错的性能,因为我想GC会在此设置下频繁运行,因为它没有太多可用的备用内存

以上是 如何减少Spring Boot的内存使用量? 的全部内容, 来源链接: utcz.com/qa/422657.html

回到顶部