Когда заканчивается общий язык выполнения? - программирование

Когда заканчивается общий язык выполнения?

В разделе производительности для интернетов в MSDN есть полезное предупреждение:

память, выделенная для интернированных объектов String, вряд ли будет выпущена до тех пор, пока не закончится среда CLR.

Но: когда CLR заканчивается?

4b9b3361

Ответ 1

Простой ответ: CLR завершается, когда хост (процесс) завершается.

Кроме того, есть AppDomain по умолчанию (это недоступно). Этот AppDomain будет продолжать существовать, даже если ваш AppDomain будет выгружен. Вот что я думаю, что Тигран упоминал как Система.

Ответ 3

В большинстве случаев документация относится к тому факту, что CLR-поток, связанный с вашим процессом, будет прекращен, как правильно сообщает документация, что inter string:

Общая среда выполнения в режиме реального времени сохраняет хранилище строк, поддерживая table, называемый междоменным пулом, который содержит единственную ссылку на каждая уникальная литеральная строка, объявленная или созданная программно в вашей программы. Следовательно, экземпляр литеральной строки с конкретное значение существует только один раз в системе.

а не в вашем приложении. На самом деле, читайте далее:

Ссылка на CLR для интернированного объекта String может сохраняться после вашего приложение или даже ваш домен приложения завершается...

Таким образом, в основном хранилище, в котором находятся эти данные, выходит из вашего адресного пространства процесса и поэтому остается в событии system после завершения процесса.