Las manipulaciones de cadena son inmutables. Se creará una nueva cadena cada vez que stmt x + = 2000_char_long_string; es ejecutado. Por lo tanto, como sugiere Kobi, debe usar una clase StringBuilder.
Sin embargo, en su caso, debe especificar la capacidad en el constructor StringBuilder.
Esto se debe a que, si no se especifica, la capacidad por defecto de StringBuilder durante la creación es 16.
Una vez agotada esta capacidad, se creará una nueva ubicación de memoria contigua, copiar todos los contenidos de la StringBuilder a la nueva ubicación y apunte la instancia a la nueva ubicación. Como ya conoce el tamaño aproximado de la cadena final (tal vez 7000 * 2000), puede especificar la capacidad en consecuencia.
Por favor, consulte mi respuesta a StringBuilder and capacity? para más detalles.
En su caso, sería útil especificar la capacidad durante la inicialización de StringBuilder para que su código sea más rápido y evitar la sobrecarga debido a la reasignación de memoria en StringBuilder. Por favor revisa mi respuesta a continuación. –
¡StringBuilder mueve la lata de pintura! http://www.joelonsoftware.com/articles/fog0000000319.html –