<snip>
> In theory the discarded connections should eventually be garbage
> collected and closed, right? So at least the leak is bounded.
>
I don't think so. We had a similar problem here.
After many hours of debugging, we came to the fact that either
java garbage collector does _not_ close open connections or do it
after a long time (much longer than one would expect).
This feature/bug caused a severe connection leak in our code and
we had to issue a explicit close() to our socket connections.