Heim >Java >javaLernprogramm >Werden String-Literale in Java jemals als Müll erfasst?

Werden String-Literale in Java jemals als Müll erfasst?

DDD
DDDOriginal
2024-10-30 02:46:29945Durchsuche

 Are String Literals Ever Garbage Collected in Java?

Garbage Collection von String-Literalen

F1: Wenn ein String zur Kompilierungszeit als Literal definiert ist (z. B. String str = "java"), wird es im 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.

Das obige ist der detaillierte Inhalt vonWerden String-Literale in Java jemals als Müll erfasst?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn