Интернируется ли String с помощью .intern () Сборка мусора? - PullRequest
1 голос
/ 19 марта 2019

Я выполнил следующий фрагмент кода

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 собирать интернированные строки, или что-то еще происходит в приведенном выше коде?

...