Мое понимание (что может быть неправильно) заключается в том, что в C# при создании строки он переводится в «внутренний пул». Это сохраняет ссылки на строки, так что несколько одинаковых строк могут совместно использовать операционную память.Как предотвратить интернирование внутри строки
Однако я обрабатываю много строк, которые, скорее всего, уникальны, и мне нужно полностью удалить их из оперативной памяти, когда я закончил с каждым из них, и я не уверен, как будет удаляться кешированная ссылка так что сборщик мусора может просто удалить все строковые данные из памяти. Как я могу препятствовать тому, чтобы строка была интернирована в этом кеше, или как я могу удалить ее/или удалить из нее строку, чтобы она, безусловно, удалялась из оперативной памяти?
Какова ваша мотивация к желанию сделать что-то отличное от поведения по умолчанию? –
Просто дайте GC выполнить свою работу. – ken2k
Не каждая строка становится интернированной, [только буквальные строки] (http://stackoverflow.com/questions/8509035/why-only-literal-strings-saved-in-the-intern-pool-by-default). –