প্রোগ্রাম এক্সিকিউশন время তৈরি হওয়া অবজেক্ট গার্বেজ কলেক্টর (GC) দ্বারা স্বয়ংক্রিয়ভাবে রিমুভ করা হয়। যখন কোনো অবজেক্ট কোনো থ্রেড দ্বারা রেফারেন্সড নয় এবং জেভিএম নির্ধারণ করে যে এই অবজেক্টটি আর এক্সেসIBLE নয়, তখন সেটি গার্বেজ কলেকশনের জন্য যোগ্য হয়।
Object ক্লাসে একটি finalize() মেথড থাকে, যা GC হিপ থেকে অবজেক্ট রিমুভ করার আগে স্বয়ংক্রিয়ভাবে কল করে। জাভা ৯-এ finalize() মেথডটি ডিপ্রিকেটেড করা হয়েছে এবং গার্বেজ কলেকশন ম্যানেজমেন্টের জন্য নতুন ক্লাস java.lang.ref.Cleaner যোগ করা হয়েছে। Cleaner ক্লাসের অবজেক্ট স্বয়ংক্রিয়ভাবে নোটিফাইড হয় যখন কোনো অবজেক্ট গার্বেজ কলেকশনের জন্য যোগ্য হয়। গার্বেজ কলেক্ট হওয়া অবজেক্টটি register() মেথড ব্যবহার করে ক্লিনার অবজেক্টের সাথে রেজিস্টার করতে হয়।
উদাহরণ
import java.lang.ref.Cleaner;
public class CleanerTest {
public static void main(String args[]) {
System.out.println("TutorialsPoint");
Cleaner cleaner = Cleaner.create();
if(true) {
CleanerTest myObject = new CleanerTest();
cleaner.register(myObject, new State()); // register cleaner
}
for(int i = 1; i <= 10000; i++) {
String[] largeObject = new String[1000];
try {
Thread.sleep(1);
} catch(InterruptedException e) {
e.printStackTrace();
}
}
}
private static class State implements Runnable {
public void run() {
System.out.print("Cleaning action");
}
}
}
আউটপুট
TutorialsPoint Cleaning action