code: private int releaseTailFrame(ByteBuf content) {
      int frameSize = content.readableBytes();
      cacheSize -= frameSize;
      position += frameSize;
      content.release();
      return frameSize;
    }
docs: /* this method and saveFrame() won't be called concurrently,
  so non-atomic on volatile is safe