Moje zrozumienie (które może być błędne) polega na tym, że w języku C# po utworzeniu łańcucha zostaje on internowany do "puli internującej". Zachowuje to odniesienie do ciągów, dzięki czemu wiele tych samych ciągów może współużytkować pamięć operacyjną.Jak zapobiegać internowaniu łańcucha znaków?
Jednak przetwarzam wiele ciągów znaków, które najprawdopodobniej są unikatowe i muszę je całkowicie usunąć z pamięci operacyjnej, gdy skończę pracę z każdym z nich i nie jestem pewien, w jaki sposób buforowane odwołanie zostanie usunięte aby odśmiecacz mógł po prostu usunąć wszystkie dane ciągów z pamięci. Jak mogę zapobiec internowaniu napisu w tej pamięci podręcznej lub w jaki sposób mogę go usunąć lub usunąć z niego ciąg znaków, aby z pewnością został usunięty z pamięci operacyjnej?
Jaka jest Twoja motywacja do chęci zrobienia czegoś innego niż domyślne zachowanie? –
Po prostu pozwól, aby GC wykonał swoją pracę. – ken2k
Nie każdy ciąg zostaje internowany, [tylko ciągi literalne] (http://stackoverflow.com/questions/8509035/why-only-literal-strings-saved-in-the-intern-pool-by-default). –