Где находятся строковые литералы Java и .NET?

Недавнийвопрос о строковых литералах в .NET попался на глаза. Я знаю, что строковые литералыинтернированы так что разные строки с одинаковым значением ссылаются на один и тот же объект. Я также знаю, что строка может быть интернирована во время выполнения:

string now = DateTime.Now.ToString().Intern(); 

Очевидно, что строка, которая интернируется во время выполнения, находится в куче, но я предположил, что литерал помещается в сегмент данных программы (и сказал это в моемответ на указанный вопрос). Однако я не помню, чтобы где-нибудь видел это. Я предполагаю, что это так, потому что это то, как я это сделаю, и тот факт, чтоldstr Инструкция IL используется для получения литералов, и кажется, что никакого распределения не происходит, это меня поддерживает.

Короче говоря, где находятся строковые литералы? Это в куче, сегменте данных или в каком-то другом месте, о котором я не думал?

Редактировать: Если строковые литералыделать проживать в куче, когда они распределяются?

Ответы на вопрос(7)

Ваш ответ на вопрос