在这里玩游戏的时间不算太晚,但是我在Docker上的容器化Spring
Boot应用程序遇到了同样的问题。在最简单的带有单个控制器和嵌入式Tomcat的Spring
Boot应用程序上,您将获得的最低内存总量约为72M。投入Spring Data REST,Spring
Security和一些JPA实体,您的最低要求为200M-300M。通过使用以下JVM选项,您可以将一个简单的Spring
Boot应用程序总数降低到约72M。
使用
-XX:+UseSerialGCthis将与分配堆内存的线程而不是专用GC线程内联执行垃圾回收
使用
-Xss512k此选项会将每个线程的堆栈内存限制为512KB,而不是默认的1MB
使用
-XX:MaxRAM=72mThis将限制JVM对堆和非堆托管内存的计算在此值的限制内。
除了上述JVM选项之外,您还可以在
application.properties文件内使用以下属性:
server.tomcat.max-threads = 1这会将HTTP请求处理程序线程数限制为1(默认值为200)
这是一个使用上述限制和docker 参数
docker stats运行 非常 简单的Spring Boot应用程序的示例
-m72m。如果我降低的值低于此值,我将无法启动应用程序。
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会在此设置下频繁运行,因为它没有太多可用的备用内存
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)