NNTPClient.listNewNews(..) can use a lot of memory for large groups. I recommend adding streaming version of the same.
Iterator<String> iterateNewNews(NewGroupsOrNewsQuery query);
One could also add streaming versions of the *Newsgroups methods, but these are expected to have smaller results than some large newsgroups.
Iterator<NewsgroupInfo> iterateNewNewsgroups(NewGroupsOrNewsQuery query);
Iterator<NewsgroupInfo> iterateNewsgroups(String wildmat);
I'll work on iterateNewNews(..) and submit a patch if it's good.