Pool readers and streams with Json.NET
You could create your own TextReader that allows you to change the underlying Stream, or even directly reads from the ArraySegment&lt;byte&gt;.

But hundreds of times per second is not that often, are you sure worrying about allocations here is worth it? And if it is, I would first look at the 2 kB of buffer your StreamReader allocates every time it's created, rather than the few tens of bytes for the StreamReader and JsonTextReader objects.