设置jar包使用内存

下面的命令中包含了几个 jvm option 限制运行jar包使用的内存在72M。

java -XX:+UseSerialGC -Xss512k -XX:MaxRAM=72m -jar image-0.0.4-SNAPSHOT.jar

如果不加这3个option的话,会使用大概300-400M内存。

根据这个答案1进行的设置:

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

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

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

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

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

这是一个使用上述限制并使用 docker -m 72m 参数运行非常简单的 Spring Boot 应用程序的 docker stats 示例。如果我降低的值低于此值,我将无法启动应用程序。

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

  1. CCob. stackoverflow Answers.2018年10月25日 ↩︎