В общем случае ответ отрицательный, но вы, безусловно, можете настроить условия, из-за которых у вас заканчивается память. В частности, если вы отправите длину строки перед вашим потоком, вы сможете создать StringBuilder с правильным размером массива внутри него. Размеры массивов после создания не могут быть изменены, поэтому, если у вас заканчивается емкость массива в StringBuilder, реализация должна выделить новый массив (обычно в два раза больше, чтобы избежать слишком большого изменения размера), а затем скопировать содержимое старого массива. Рассмотрим поток размером X, чтобы изменить размер StringBuilder, который оказался емкостью X-1, вам нужно почти X * 3 объема памяти. Размер StringBuilder, позволяющий избежать изменения размеров, позволит вам втиснуть в память большие потоки.
Еще одна вещь, которую вы можете захотеть сделать, это настроить объем памяти, доступный для процесса вашего сервера. Используйте переключатель, например -Xmx1024m, при запуске процесса сервера.
Конечно, было бы намного лучше пересмотреть ваш алгоритм, чтобы не требовать, чтобы весь поток хранился в памяти. Это позволит вам обрабатывать больше клиентов с одинаковым количеством оборудования.