diff --git a/router/java/src/net/i2p/router/crypto/ratchet/RatchetTagSet.java b/router/java/src/net/i2p/router/crypto/ratchet/RatchetTagSet.java
index 470993f92789b117ff5c967fbad0db37e4f0c05b..1c7049e34540018776d7651cd79b2d783446f953 100644
--- a/router/java/src/net/i2p/router/crypto/ratchet/RatchetTagSet.java
+++ b/router/java/src/net/i2p/router/crypto/ratchet/RatchetTagSet.java
@@ -86,6 +86,8 @@ class RatchetTagSet implements TagSetHandle {
     static final int DEBUG_OB_NSR = 0x10001;
     static final int DEBUG_IB_NSR = 0x10002;
     static final int DEBUG_SINGLE_ES = 0x10003;
+    // Start empty (no allocations), we only use storage for gaps
+    private static final int INITIAL_KEY_CAPACITY = 0;
 
     /**
      *  Outbound NSR Tagset
@@ -160,7 +162,7 @@ class RatchetTagSet implements TagSetHandle {
         if (isInbound) {
             _sessionTags = new SparseArray<RatchetSessionTag>(minSize);
             if (state == null)
-                _sessionKeys = new SparseArray<byte[]>(minSize);
+                _sessionKeys = new SparseArray<byte[]>(INITIAL_KEY_CAPACITY);
             else
                 _sessionKeys = null;
             for (int i = 0; i < minSize; i++) {