@louiscryan can be closed ?
 @louiscryan - Thanks for the fix!

DefaultHttp2Headers has memory leak when being cleared
When calling DefaultHttp2Headers.clear the firstNonPseudoHeaders reference holds onto data that has just been cleared

codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2Headers.java
codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2Headers.java
codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2HeadersTest.java
diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2Headers.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2Headers.java
index 7a4bfe60435..69b1e17e079 100644
--- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2Headers.java
+++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2Headers.java
@@ -90,6 +90,12 @@ public DefaultHttp2Headers(boolean validate) {
               validate ? HTTP2_NAME_VALIDATOR : NameValidator.NOT_NULL);
     }
 
+    @Override
+    public Http2Headers clear() {
+        this.firstNonPseudo = head;
+        return super.clear();
+    }
+
     @Override
     public Http2Headers method(CharSequence value) {
         set(PseudoHeaderName.METHOD.value(), value);

diff --git a/codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2HeadersTest.java b/codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2HeadersTest.java
index 5885ea153ce..eb187c9d4ad 100644
--- a/codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2HeadersTest.java
+++ b/codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2HeadersTest.java
@@ -22,6 +22,7 @@
 
 import java.util.Map.Entry;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
@@ -74,6 +75,16 @@ public void testHeaderNameValidation() {
         headers.add(of("Foo"), of("foo"));
     }
 
+    @Test
+    public void testClearResetsPseudoHeaderDivision() {
+        DefaultHttp2Headers http2Headers = new DefaultHttp2Headers();
+        http2Headers.method("POST");
+        http2Headers.set("some", "value");
+        http2Headers.clear();
+        http2Headers.method("GET");
+        assertEquals(1, http2Headers.names().size());
+    }
+
     private static void verifyAllPseudoHeadersPresent(Http2Headers headers) {
         for (PseudoHeaderName pseudoName : PseudoHeaderName.values()) {
             assertNotNull(headers.get(pseudoName.value()));
