diff --git a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/ByteAccumulator.java b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/ByteAccumulator.java index 02bd0c8821e1..fdd6f28ba9ce 100644 --- a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/ByteAccumulator.java +++ b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/ByteAccumulator.java @@ -103,7 +103,18 @@ void recycle() { index = 0; length = 0; - prevChunks = nextChunks; + + int resize = 16; + if (prevChunks == null || nextChunks.size() > prevChunks.size()) + { + prevChunks = nextChunks; + } + + // keep prevChunks retain max resize elements + if (prevChunks.size() > resize) + { + prevChunks.subList(resize, prevChunks.size()).clear(); + } nextChunks = new ArrayList<>(); } }