যখন কোনো অবজেক্টের আর কোনো রেফারেন্স থাকে না, তখন অবজেক্টটি ফাইনালাইজ হয় এবং যখন গার্বেজ কালেকশন শুরু হয়, এই ফাইনালাইজড অবজেক্টগুলো সংগ্রহ করা হয়, যা JVM দ্বারা স্বয়ংক্রিয়ভাবে করা হয়। আমরা সরাসরি গার্বেজ কালেকশন কল করতে পারি কিন্তু এটি গ্যারান্টি দেয় না যে GC অবিলম্বে এক্সিকিউশন শুরু করবে।
আমরা গার্বেজ কালেকশন স্পষ্টভাবে দুটি উপায়ে কল করতে পারি:
- System.gc() মেথড
- Runtime.gc() মেথড
java.lang.Runtime.freeMemory() মেথড জাভা ভার্চুয়াল মেশিন (JVM)-এ ফ্রি মেমরির পরিমাণ রিটার্ন করে। gc() মেথড কল করার ফলে freeMemory দ্বারা রিটার্ন করা মান বাড়তে পারে।
উদাহরণ
public class GarbageCollectionTest {
public static void main(String args[]) {
System.out.println(Runtime.getRuntime().freeMemory());
for (int i=0; i<= 100000; i++) {
Double d = new Double(300);
}
System.out.println(Runtime.getRuntime().freeMemory());
System.gc();
System.out.println(Runtime.getRuntime().freeMemory());
}
}
আউটপুট
15648632 13273472 15970072