Я выполнил следующий фрагмент кода
class Test{
static void func(){
String s="str";
long i=0;
while(true){
String s1=s+i++;
s1.intern();
}
}
public static void main(String[] args) {
func();
}
}
При выполнении вышеуказанного кода с помощью следующей команды -
java -Xmx1m Test
Кажется, он работает бесконечно, что заставляет меня думать, что интернированные строки могут быть собраны в мусор.
Так что мой вопрос в том, может ли GC собирать интернированные строки, или что-то еще происходит в приведенном выше коде?