原因分析
1、Springboot2.0 以后默认使用 Lettuce 作为操作 Redis 的客户端。
2、Lettuce 使用 Netty 进行网络通信
3、Lettuce 的 Bug 导致堆外内存溢出。
Netty 如果没有指定堆外内存,默认使用 -Xmx1024m 中指定的大小。
解决方案
1、升级 Lettuce 客户端
2、切换使用 Jedis(推荐)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>