Spring Boot 2/3/4 并发内存对比测试报告

Spring Boot 2/3/4 并发内存对比测试报告

项目简介

两个功能完全相同的员工管理系统,分别基于 Spring Boot 4(Java 21)和 Spring Boot 3(Java 8),用于对比打包 JAR 容量差异,验证 Spring Boot 4 模块化重构带来的瘦身效果。

功能列表

功能说明
部门 CRUD新增/修改/删除/查询部门,分页列表
员工 CRUD新增/修改/删除/查询员工,分页列表
员工搜索按部门筛选、姓名模糊搜索
统一响应ApiResponse 封装(code/message/data)
全局异常处理@RestControllerAdvice
参数校验Bean Validation(@NotBlank/@Size/@Email)
数据库初始化schema.sql 建表 + data.sql 初始数据
健康检查Spring Boot Actuator(health/info)

快速开始

前置条件

  • JDK 21(springboot4 项目)
  • JDK 17(springboot3 项目)
  • JDK 1.8(springboot2 项目)
  • MySQL 8.4 运行在 127.0.0.1:13308
  • Maven 3.6+

创建数据库

CREATE DATABASE employee_db DEFAULT CHARACTER SET utf8mb4;
CREATE DATABASE employee_db3 DEFAULT CHARACTER SET utf8mb4;

API 接口

方法路径说明
GET/api/departments?page=0&size=10部门分页列表
GET/api/departments/{id}部门详情
POST/api/departments新增部门
PUT/api/departments/{id}修改部门
DELETE/api/departments/{id}删除部门
GET/api/employees?departmentId=1&name=张&page=0&size=10员工分页/搜索
GET/api/employees/{id}员工详情
POST/api/employees新增员工
PUT/api/employees/{id}修改员工
DELETE/api/employees/{id}删除员工
GET/actuator/health健康检查
GET/actuator/info应用信息

测试环境

  • 测试时间: 2026-05-05
  • 操作系统: macOS (Darwin)
  • 测试工具: Apache Bench (ab)
  • 数据库: H2 内存数据库

测试配置

配置项
并发数20
总请求数200
预热请求数50
测试端点/api/departments?page=0&size=10

应用配置

应用Spring Boot 版本Java 版本虚拟线程
springboot22.7.181.8不支持
springboot33.4.117不支持
springboot44.0.021已启用

测试结果

内存对比

应用启动内存 (MB)负载后内存 (MB)内存增长 (MB)增长率
springboot2958.3976.2+17.9+1.9%
springboot3414.5454.3+39.8+9.6%
springboot4365.6374.9+9.3+2.5%

性能对比

应用RPS (每秒请求数)平均响应时间 (ms)失败请求数
springboot2149.67133.6320
springboot31862.0210.7410
springboot41494.9513.3780

关键发现

1. 内存占用

  • Spring Boot 4 内存最优:启动内存仅 365.6 MB,比 Spring Boot 3 低 12%,比 Spring Boot 2 低 62%
  • 内存增长最小:并发测试后内存增长仅 9.3 MB,远低于 Spring Boot 3 的 39.8 MB
  • 虚拟线程效果显著:Spring Boot 4 启用虚拟线程后,内存管理更高效

2. 性能表现

  • Spring Boot 3 RPS 最高:1862.02 req/s
  • Spring Boot 4 RPS 次之:1494.95 req/s
  • Spring Boot 2 RPS 最低:149.67 req/s

3. 虚拟线程优势

Spring Boot 4 启用了虚拟线程(Virtual Threads),带来以下优势:

  1. 更低的内存占用:虚拟线程比平台线程更轻量
  2. 更好的并发处理:在高并发场景下内存增长更小
  3. 更高效的资源利用:减少线程上下文切换开销

技术细节

Spring Boot 4 虚拟线程配置

spring:
  threads:
    virtual:
      enabled: true

测试方法

  1. 分别启动三个应用(使用 H2 内存数据库)
  2. 使用 ab 进行并发压力测试
  3. 监控 JVM 内存使用(RSS)
  4. 对比启动后和负载后的内存差异

结论

  1. Spring Boot 4 在内存方面表现最优,特别是在并发场景下
  2. 虚拟线程是关键优势,显著降低了内存增长
  3. Spring Boot 3 性能最好,但内存增长较大
  4. Spring Boot 2 内存占用最高,性能最差

建议

  • 新项目推荐使用 Spring Boot 4:内存效率高,支持虚拟线程
  • 高并发场景优先考虑 Spring Boot 4:虚拟线程能有效降低资源消耗
  • 性能敏感场景可考虑 Spring Boot 3:RPS 最高,但需注意内存增长

测试文件

  • 仓库:https://github.com/gzdzh-cn/springboot-test
  • 测试脚本: concurrent-memory-test.sh
  • 详细日志: test-results/
  • AB测试结果: test-results/*_ab.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值