Струнные манипуляции неизменны. Каждый раз будет создаваться новая строка stmt x + = 2000_char_long_string; выполнен. Следовательно, как рекомендует Коби, вы должны использовать класс StringBuilder.
Однако в вашем случае вы должны указать емкость в конструкторе StringBuilder.
Это потому, что, если не указано, емкость StringBuilder по умолчанию при создании равна 16.
Как только эта емкость будет исчерпана, она создаст новую непрерывную ячейку памяти, скопирует все содержимое StringBuilder в новую ячейку и укажет экземпляр на новую ячейку. Поскольку вы уже знаете о приблизительном размере конечной строки (возможно, 7000 * 2000), вы можете указать емкость соответственно.
Пожалуйста, смотрите мой ответ на StringBuilder и емкость? для более подробной информации.