Soalan:
Tersurat rentetan secara amnya dianggap sebagai terperangkap dan oleh itu tidak terdedah kepada kutipan sampah. Walau bagaimanapun, kekeliruan timbul apabila meneroka nuansa gabungan rentetan, caching kelas rentetan dan pemunggahan kelas. Untuk menjelaskannya, mari kita teliti soalan berikut:
Jawapan:
1. Pengumpulan Sampah Literal Masa Kompilasi:
Tersurat rentetan, ditakrifkan pada masa penyusunan, hidup selagi pemuat kelas yang memuatkan kod yang mengandungi literal tersebut. Selagi kelas yang menggunakan literal masih dimuatkan, objek String yang mewakilinya tidak akan dikumpul sampah. Walau bagaimanapun, jika pemuat kelas dimusnahkan, literal mungkin tertakluk kepada kutipan sampah.
2. Kaedah pelatih dan Pengumpulan Sampah:
Memanggil kaedah pelatih pada rentetan mengembalikan objek yang sama yang mewakili rentetan literal. Oleh yang demikian, rentetan yang diinternalkan mempunyai jangka hayat yang sama seperti rentetan itu sendiri. Walau bagaimanapun, rentetan yang dibuat menggunakan baharu yang tidak sama dengan literal rentetan boleh menjadi sampah yang dikumpul jika ia tidak dapat dicapai.
3. Pemunggahan Kelas dan Huruf Rentetan:
Adalah tidak betul untuk mendakwa bahawa literal hanyalah sampah yang dikumpul apabila kelas Rentetan dipunggah. Java tidak memunggah kelas terasnya, termasuk kelas String. Literal rentetan dikekalkan selagi kod yang merujuknya kekal aktif.
Atas ialah kandungan terperinci Adakah String Literal Pernah Dikumpul Sampah? Meneroka Nuansa String Interning dan Class Unloading.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!