Looking through a heap dump from our server which crashed with an OOME recently, I noticed a number of large String's. The second largest, at around 300k characters, is the standard error from a test suite (one of thousands) in one build (maybe 20 builds old) in one job.
Why should this be loaded in memory? In the unlikely event that someone wants to look through details of these old test results, they can be loaded from disk. The junitResult.xml from this build is 3.1 Mb, so it is ridiculous to keep it in heap. Most of that is stderr.
Alternately, discard stdout/stderr for test suites that passed, since it is unlikely you would want to look at output in that case anyway.