对于轻量级 Spring Boot 应用,内存分配需根据实际负载和依赖调整,但可参考以下经验值:
- 最小可行配置:256 MB(仅适用于极简 demo、无数据库连接池、无复杂缓存的场景,启动可能受限)
- 推荐起步配置:512 MB
这是大多数轻量 Spring Boot 应用的合理起点,能容纳基础 Tomcat/Jetty 容器、Spring 上下文、简单业务逻辑及少量依赖(如 JPA + HikariCP)。 - 常见生产场景:768 MB – 1 GB
若包含数据库连接池(HikariCP 默认 10–20 个连接)、Redis 客户端、日志缓冲、或中等复杂度业务(如文件处理、JSON 序列化),建议预留此范围。 - 安全冗余原则:
- JVM Heap 建议设为物理内存的 60%~70%(例如 512 MB 机器 →
-Xmx384m); - 总内存 = Heap + Metaspace + 非堆内存(线程栈、直接内存等,通常额外 +10%~20%);
- 避免使用
-Xms=Xmx固定堆大小,除非有明确调优需求。
- JVM Heap 建议设为物理内存的 60%~70%(例如 512 MB 机器 →
✅ 实用建议:
- 先用
docker run -m 512m ...或云服务器最低档(如 2 vCPU + 512 MB RAM)测试; - 监控实际运行:
jstat -gc <pid>观察 GC 频率,free -h检查系统整体压力; - 若频繁 Full GC 或 OOM,再逐步提升至 768 MB/1 GB;
- 启用压缩指针(默认开启于 32-bit heap < 32GB)+
-XX:+UseG1GC(Java 9+)可提升效率。
📌 示例命令(Docker):
docker run -d --name my-app -m 512m --memory-swap=512m -e JAVA_OPTS="-Xmx384m -Xms256m" your-image:latest
最终目标:让应用在峰值负载下仍有 20%~30% 内存余量,避免频繁 GC 影响响应延迟。
CLOUD云枢