Upon further testing (and looking at the source code), I think I see the problem. I'm streaming a 300MB zip file to the server. While reading the stream, the "dump" data member in WinstoneInputStream grows and grows and I think it may cause a lot of garbage collection and, eventually, may even cause an OutOfMemory exception. It doesn't look like the dump data is ever even used.