กระบวนการทำลายออบเจ็กต์ที่ไม่มีการอ้างอิงเรียกว่า Garbage Collection (GC) เมื่อออบเจ็กต์ไม่มีการอ้างอิง จะถูกพิจารณาว่าเป็นออบเจ็กต์ที่ไม่ได้ใช้งาน JVM จะทำลายออบเจ็กต์นั้นโดยอัตโนมัติ
มีหลายวิธีทำให้ออบเจ็กต์เหมาะสมสำหรับ GC
1. การกำหนด reference ให้เป็น null
เราสามารถตั้งค่า object references ทั้งหมดให้เป็น "null" เมื่อการสร้างออบเจ็กต์เสร็จสิ้นแล้ว
ตัวอย่าง
public class GCTest1 {
public static void main(String[] args) {
String str = "Welcome to TutorialsPoint"; // String object ถูกอ้างอิงโดยตัวแปร str
// และยังไม่เหมาะสมสำหรับ GC
str = null; // String object ที่ถูกอ้างอิงโดย str เหมาะสมสำหรับ GC แล้ว
System.out.println("str eligible for GC: " + str);
}
}
Output
str eligible for GC: null
2. การกำหนด reference variable ให้ชี้ไปยังออบเจ็กต์อื่น
เราสามารถทำให้ reference variable ชี้ไปยังออบเจ็กต์อื่นได้ แยก reference variable ออกจากออบเจ็กต์เดิมและตั้งค่าให้ชี้ไปออบเจ็กต์ใหม่ ดังนั้นออบเจ็กต์ที่เคยถูกอ้างอิงก่อนการกำหนดใหม่จึงเหมาะสมสำหรับ GC
ตัวอย่าง
public class GCTest2 {
public static void main(String[] args) {
String str1 = "Welcome to TutorialsPoint";
String str2 = "Welcome to Tutorix"; // String object ถูกอ้างอิงโดย str1 และ str2
// และยังไม่เหมาะสมสำหรับ GC
str1 = str2; // String object ที่ถูกอ้างอิงโดย str1 เหมาะสมสำหรับ GC แล้ว
System.out.println("str1: " + str1);
}
}
Output
str1: Welcome to Tutorix