在 RuoYi 前后端分离版本(RuoYi-Vue)架构中,Java 后端服务(Spring Boot 应用)的内存占用会受到多种因素影响,但通常情况下,在默认配置和常规业务场景下,其 JVM 内存占用大致如下:
一、典型内存占用范围
| 场景 | JVM 堆内存(-Xmx) | 实际总内存占用(JVM 进程) |
|---|---|---|
| 开发/测试环境(轻量使用) | 512MB – 1GB | 800MB – 1.2GB |
| 生产环境(中等并发) | 1GB – 2GB | 1.3GB – 2.5GB |
📌 说明:实际操作系统看到的 Java 进程内存 = 堆内存 + 元空间(Metaspace)+ 栈内存 + 直接内存 + GC 开销 + 线程开销等。
二、影响内存占用的主要因素
-
JVM 参数配置
-Xms和-Xmx:初始和最大堆大小。RuoYi 默认可能为1g。-Xms512m -Xmx1g-XX:MetaspaceSize和-MaxMetaspaceSize:元空间默认无上限,但一般占用 100~300MB。- 是否开启 G1GC、ZGC 等也会影响内存管理效率。
-
应用模块数量
- RuoYi 包含系统管理(用户、角色、菜单)、监控、定时任务、代码生成等模块。
- 若启用 Redis 缓存、Ehcache、或集成消息队列(如 RabbitMQ),内存会增加。
-
并发请求与线程数
- Tomcat 默认最大线程数 200,每个线程栈默认 1MB,极端情况可额外占用 200MB。
- 高并发下堆内存中对象增多,GC 压力增大,内存峰值上升。
-
第三方依赖
- Spring Boot + Spring Security + MyBatis Plus + Druid + Swagger + JWT 等组件都会占用一定内存。
- 日志框架(Logback)、监控(Actuator)也会轻微增加开销。
-
数据库连接池
- Druid 默认最大连接数 20~50,每个连接有一定内存开销。
三、实测参考数据(常见部署)
| 配置 | 内存表现 |
|---|---|
-Xms512m -Xmx1g,空闲状态 |
JVM 堆使用约 300~500MB,进程总内存 ~900MB |
| 中等负载(几十个用户在线) | 堆使用 600~800MB,总内存 ~1.4GB |
| 高负载或全功能开启 | 可能接近 2GB 总内存 |
四、优化建议(降低内存)
# 示例:低内存环境启动参数
java -Xms256m -Xmx512m
-XX:MetaspaceSize=128m -MaxMetaspaceSize=256m
-Xss256k
-jar ruoyi-system.jar
- 减少 Tomcat 线程数(
server.tomcat.threads.max=100) - 关闭不必要的模块(如未使用的监控端点)
- 使用精简版 JDK(如 OpenJDK Alpine)
- 使用 JProfiler 或 VisualVM 分析内存瓶颈
五、总结
✅ 一般结论:
在标准配置下,RuoYi 后端 Java 服务 推荐分配 1GB 堆内存,实际物理内存占用约 1.2~1.8GB。
若服务器资源紧张,可通过调优降至 最小 800MB 左右运行,但需关闭部分功能并限制并发。
📌 建议部署环境:
- 最低配置:1核2GB 内存(仅测试)
- 推荐生产配置:2核4GB 内存(可支持良好并发)
如需更精确的数据,可通过 jstat -gc <pid>、jmap -heap <pid> 或 Prometheus + Grafana 监控实际运行时内存使用情况。
轻量云Cloud