Recolección de basura en cadenas internas, String Pool y perm-space

Después de explorar las partes internas de las cuerdas de Java, me confundí en lo que se conoce como el “espacio permanente”. Mi comprensión al principio fue que contenía literales de String y metadatos de clase como se explica en esta pregunta .

También he leído sobre el método String.intern() y coloca String s en el String Pool devolviendo una referencia a una instancia única del mismo. Entiendo que este es el mismo grupo de cadenas que contiene los literales de cadena que existen en el espacio permanente de la JVM. No me pareció posible que el “espacio permanente” pudiera ser modificable (después de todo, es permanente, ¿sí?). Pero luego encontré esta pregunta donde el comentario votado por EJP sobre la respuesta aceptada explica que

Las cadenas internados han sido capaces de GC desde hace algunos años.

Implica que el GC se ejecuta en el espacio permanente que no parece muy permanente. ¿Cómo se reconcilia esto? ¿El GC revisa todo en el espacio permanente? ¿El GC comprueba todo en el grupo de cadenas, incluidos los literales de cadena de la fuente? ¿Hay un segundo conjunto de cadenas para cadenas internas? ¿Sabe el GC solo mirar a las cuerdas internados durante la recolección? ¿O este comentario está equivocado e internar una cuerda impide que se lo someta a GC (lo que espero que no sea el caso)?

Los literales de cadena están internados . A partir de Java 7 , HotSpot JVM coloca cadenas internas en el montón, no permgen.

Antes de Java 7, el punto de acceso puso cadenas internas en permgen. Sin embargo, las cadenas internas en permgen fueron recolectadas . Aparentemente, los objetos Class en permgen también son coleccionables , por lo que todo en permgen es coleccionable, aunque la colección permgen podría no estar habilitada por defecto en algunas JVM antiguas.

Los literales de cadena, al ser internados, serían una referencia mantenida por el objeto Clase declarante al objeto String en el grupo interno. Por lo tanto, la Cadena literal interna solo se recostackría si también se recostackra el objeto Clase que se refirió a ella.