Garbage Collection of String Literals
F1: Wenn ein String zur Kompilierungszeit als Literal definiert ist (z. B. String str = "java"), wird es durch Müll gesammelt?
Normalerweise nicht. Codeobjekte enthalten Verweise auf literale String-Objekte, sodass diese erreichbar bleiben. Die Speicherbereinigung erfolgt nur, wenn Codeobjekte nicht mehr erreichbar sind.
F2: Wenn die interne Methode verwendet wird (z. B. String str = new String("java").intern()), handelt es sich um Müll gesammelt?
Das zurückgegebene Objekt ist dasselbe wie das String-Literal „Java“, das zum Zeitpunkt des Ladens der Klasse interniert wird. Daher erfolgt keine Müllabfuhr. Interne Strings, die nicht mit String-Literalen identisch sind, können jedoch durch Garbage Collection erfasst werden, wenn sie nicht mehr erreichbar sind.
F3: Ist es sinnvoll, dass Literale nur durch Garbage Collection erfasst werden, wenn die String-Klasse entladen wird?
NEIN. Die String-Klasse ist für die Java Virtual Machine unerlässlich und wird wahrscheinlich nicht entladen. Anderslautende Quellenangaben sind falsch.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3