К примеру у нас есть некий класc X, который работает со строками.
(в коллекцию добавляются различные строки)
class X {
	private List<string> collection;
	public X() {
		collection = new List<string>();
	}
	public void Add() {
		// Выполним какие-то действия и получим строку. 
		string line = Something();
		// Добавим результат в коллекцию.
		collection.Add(line);
	}
	// Выполняет какие-то действия и каждый раз
	// возвращает новую строку.
	private string Something()
	{ ... }
}
Благодаря интернированию строк каждый раз в пул интернирования будет добавляться новая строка.
Допустим, мы закончили работу со строками и больше объектом, класса X, мы не пользуемся. 
Он будет собран сборщиком мусора.
Но ведь пул интернирования будет очищен только после завершения программы.
Получается в пуле будут содержаться строки даже после удаления объекта?
Следовательно память тоже будет занята?