В разделе производительности для интернетов в MSDN есть полезное предупреждение:
память, выделенная для интернированных объектов String, вряд ли будет выпущена до тех пор, пока не закончится среда CLR.
Но: когда CLR заканчивается?
В разделе производительности для интернетов в MSDN есть полезное предупреждение:
память, выделенная для интернированных объектов String, вряд ли будет выпущена до тех пор, пока не закончится среда CLR.
Но: когда CLR заканчивается?
Простой ответ: CLR завершается, когда хост (процесс) завершается.
Кроме того, есть AppDomain по умолчанию (это недоступно). Этот AppDomain будет продолжать существовать, даже если ваш AppDomain будет выгружен. Вот что я думаю, что Тигран упоминал как Система.
Существует хорошая статья Code Project, в которой приводятся некоторые подробности о жизненном цикле, включая завершение CLR.
http://www.codeproject.com/Articles/16164/Managed-Application-Shutdown
Эта статья в свою очередь вдохновлена: http://blogs.msdn.com/b/cbrumme/archive/2003/08/20/51504.aspx
В большинстве случаев документация относится к тому факту, что CLR-поток, связанный с вашим процессом, будет прекращен, как правильно сообщает документация, что inter string:
Общая среда выполнения в режиме реального времени сохраняет хранилище строк, поддерживая table, называемый междоменным пулом, который содержит единственную ссылку на каждая уникальная литеральная строка, объявленная или созданная программно в вашей программы. Следовательно, экземпляр литеральной строки с конкретное значение существует только один раз в системе.
а не в вашем приложении. На самом деле, читайте далее:
Ссылка на CLR для интернированного объекта String может сохраняться после вашего приложение или даже ваш домен приложения завершается...
Таким образом, в основном хранилище, в котором находятся эти данные, выходит из вашего адресного пространства процесса и поэтому остается в событии system после завершения процесса.