Где находятся строковые литералы Java и .NET?
Недавнийвопрос о строковых литералах в .NET попался на глаза. Я знаю, что строковые литералыинтернированы так что разные строки с одинаковым значением ссылаются на один и тот же объект. Я также знаю, что строка может быть интернирована во время выполнения:
string now = DateTime.Now.ToString().Intern();
Очевидно, что строка, которая интернируется во время выполнения, находится в куче, но я предположил, что литерал помещается в сегмент данных программы (и сказал это в моемответ на указанный вопрос). Однако я не помню, чтобы где-нибудь видел это. Я предполагаю, что это так, потому что это то, как я это сделаю, и тот факт, чтоldstr
Инструкция IL используется для получения литералов, и кажется, что никакого распределения не происходит, это меня поддерживает.
Короче говоря, где находятся строковые литералы? Это в куче, сегменте данных или в каком-то другом месте, о котором я не думал?
Редактировать: Если строковые литералыделать проживать в куче, когда они распределяются?