OutOfDirectMemoryError

OutOfDirectMemoryError错误,使用Springboot2.0↑整合Redis出现这个错误,是堆外内存错误的意思,原因是springboot2.0以后默认使用lettuce作为操作redis的客户端。它使用netty进行网络通信。

lettuce的bug导致netty堆外内存溢出,项目启动时指定 -Xmx200m;netty如果没有指定堆外内存,默认使用 指定的堆内存大小,即 -Xmx200m

解决方案:不能使用-Dio.netty.maxDirectMemory只调大堆外内存,调大只能延后报错的时间,错误还是一定会发生;

1、升级lettuce客户端;

2、切换使用jedis;

我们在spring中使用redisTemplate操作redis即可,Spring封装了Lettuce和Jedis操作redis