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
