Müll-Sammlung von String-literalen

Ich bin beim Lesen über Garbage collection und ich bin immer verwirrend such-Ergebnisse, wenn ich Suche für String-literal garbage collections.

Ich brauche Klärung der folgenden Punkte:

  1. Ob ein string ist definiert als literal zur compile-Zeit [e.g: String str = "java"] dann wird es von der garbage Collection freigegeben?
  2. Wenn verwenden intern die Methode [e.g: String str = new String("java").intern()] dann wird es Müll gesammelt? Auch wird es anders behandelt werden als String-literal in Punkt 1.
  3. Einigen stellen wird erwähnt, dass Literale werden Müll werden nur erhoben, wenn String Klasse entladen werden? Macht es Sinn, denn ich glaube nicht, dass String Klasse wird immer entladen werden.
1 - stackoverflow.com/questions/2202162/... ; 2 - stackoverflow.com/questions/6470651/... ; 3 - String a = new String("asd") -> "a" Referenz wird Müll gesammelt, sondern ist nur ein Verweis auf "asd" und "asd" wird immer da sein.
Wenn Sie suchen, mehr finden Sie Orte, zu erwähnen, dass String-Literale erstellt mit intern kann eine garbage Collection ausgeführt werden, da Sie schwache Referenz, aber ich kann es nicht bestätigen und das ist der Grund, warum ich gepostet, weil es viele gemischte Reaktionen.
“Von Java 7 wird die Java-String-Pool gespeichert ist, in den Heap-space, die garbage Collection der JVM. Der Vorteil dieses Ansatzes ist die geringere Gefahr von OutOfMemory-Fehler, da nicht referenzierte Strings aus dem pool entfernt werden, damit das freigeben von Speicher." Handbuch der Java-String-Pool von baeldung
Ole V. V. hat die richtige Antwort

InformationsquelleAutor Lokesh | 2013-03-10

Schreibe einen Kommentar