在 RuoYi 前后端分离版本(RuoYi-Vue)的架构下,Java 后端服务(通常是基于 Spring Boot + MyBatis 的项目)的内存占用会受到多种因素影响,但一般情况下可以给出一个大致范围:
一、典型内存占用情况(JVM 堆内存)
| 环境/配置 | JVM 堆内存设置建议 | 实际运行内存占用 |
|---|---|---|
| 开发环境(默认配置) | -Xms512m -Xmx1024m(512MB 初始,1GB 最大) |
实际使用:300MB ~ 700MB |
| 生产环境(轻量部署) | -Xms1g -Xmx2g |
实际使用:800MB ~ 1.5GB |
| 高并发或复杂业务场景 | -Xms2g -Xmx4g 或更高 |
可能接近 3GB+ |
⚠️ 注意:这里指的是 JVM 堆内存,实际操作系统看到的 Java 进程内存会更高(包括元空间 Metaspace、栈、直接内存等),通常比堆内存多出 20%~50%。
二、影响内存占用的主要因素
-
Spring Boot 自动配置和依赖数量
- RuoYi 集成了 Spring Security、MyBatis、Redis、Quartz 定时任务、Swagger、Druid 监控等组件,启动后有一定开销。
-
JVM 参数配置
- 默认未显式设置时,JVM 会根据物理内存自动分配(如 1/4 内存作为最大堆),可能偏高。
- 推荐生产环境显式设置:
-Xms1g -Xmx2g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m
-
并发请求与数据处理
- 大量用户同时访问、导出大数据、定时任务执行等会临时增加内存使用。
-
数据库连接池(如 Druid)
- 连接池本身占用内存较少,但连接数过多或存在连接泄漏会影响整体表现。
-
缓存使用(Redis / 本地缓存)
- 缓存数据主要在 Redis 中,Java 服务本地缓存(如字典缓存)占用较小。
三、实测参考数据(常见场景)
- 空闲状态(无请求):约 300MB ~ 500MB(堆内)
- 中等负载(几十用户在线):600MB ~ 1GB
- 高负载或批量操作:可达 1.5GB 以上
四、优化建议
-
合理设置 JVM 参数
java -Xms1g -Xmx2g -XX:+UseG1GC -jar ruoyi-system.jar -
关闭不必要的功能模块
- 如不需要 Quartz,可移除相关依赖和配置。
-
避免内存泄漏
- 检查是否有静态集合类长期持有对象引用。
- 使用
jvisualvm或arthas监控内存使用。
-
部署建议
- 单机部署:建议服务器至少 4GB 内存,留足系统和其他进程空间。
- Docker 部署:限制容器内存(如
mem_limit: 2g),防止 OOM。
总结
✅ 在常规使用场景下,RuoYi 后端 Java 服务的 JVM 堆内存占用通常在 500MB ~ 1.5GB 之间,整个 Java 进程内存消耗约为 800MB ~ 2GB。
👉 建议生产环境为 Java 服务分配 2GB 堆内存上限(-Xmx2g),并配合监控工具动态观察调整。
CLOUD技术笔记