У меня есть большая строка (например, 20 МБ).
Я сейчас разбираю эту строку. Проблема в том, что строки в C # являются неизменяемыми; это означает, что как только я создал подстроку и посмотрел на нее, память теряется.
Из-за всей обработки память забивается String
объектами, которые я больше не использую, не нуждаюсь или не использую; но сборщик мусора занимает слишком много времени, чтобы освободить их.
Итак, приложению не хватает памяти.
Я мог бы использовать неэффективный подход club и посылать несколько тысяч звонков:
GC.Collect();
везде, но это на самом деле не решает проблему.
я знаю, StringBuilder
существует, когда создает большую строку.
я знаю, TextReader
существует для чтения String
в массив char
.
мне нужно каким-то образом " повторно использовать " строку, чтобы она больше не была неизменной, чтобы я не мог без необходимости выделять гигабайты памяти, когда это сделает 1k.