Garbage Collection (GC) হল একটি প্রক্রিয়া যা Java Virtual Machine (JVM) ব্যবহৃত অব্যবহৃত অবজেক্টগুলি মুছে ফেলে যাতে মেমরি পুনরায় ব্যবহারের জন্য মুক্ত হয়। Full GC হল এমন একটি গারবেজ কালেকশন প্রক্রিয়া যা সমস্ত মেমরি স্পেস (যেমন, হিপ, সারvivor স্পেস, এবং পার্মেনেন্ট জেনারেশন) স্ক্যান করে এবং অব্যবহৃত অবজেক্টগুলি মুছে ফেলে।
Parallel Full GC হল একটি গারবেজ কালেকশন প্রক্রিয়া, যেখানে একাধিক থ্রেডের মাধ্যমে Full GC প্রক্রিয়া সম্পন্ন করা হয়। এটি G1 Garbage Collector এর একটি ফিচার, যা Java 10 এবং তার পরবর্তী সংস্করণে উন্নত করা হয়েছে। এই প্রক্রিয়ার মাধ্যমে Garbage Collection আরও দ্রুত এবং কার্যকরভাবে সম্পন্ন হয়, বিশেষত বড় সিস্টেম এবং অ্যাপ্লিকেশনের জন্য যেখানে প্রচুর ডাটা এবং লোড রয়েছে।
Parallel Full GC এর কার্যপ্রণালী:
- একাধিক থ্রেড ব্যবহার:
Parallel Full GC গারবেজ কালেকশন প্রক্রিয়াতে একাধিক থ্রেড ব্যবহার করা হয়, যার ফলে পুরো গারবেজ কালেকশন প্রক্রিয়া সমান্তরালে চলে এবং দ্রুত সম্পন্ন হয়। সাধারণ Full GC এর তুলনায় Parallel Full GC অনেক দ্রুত কাজ করে। - GC থ্রেডগুলি:
গারবেজ কালেকশন প্রক্রিয়া শুরু হওয়ার পর, JVM একাধিক থ্রেড তৈরি করে যা বিভিন্ন কাজ একযোগভাবে সম্পন্ন করে। এই থ্রেডগুলি:- অবজেক্টগুলো সনাক্ত করা,
- অব্যবহৃত অবজেক্টগুলো পরিষ্কার করা,
- লাইভ অবজেক্টগুলো সংরক্ষণ করা,
- এবং সবশেষে মেমরি পুনঃব্যবহারযোগ্য করে তোলে।
- হিপ স্পেস:
Parallel Full GC সাধারণত হিপ স্পেস (Heap Space)-এর জন্য কাজ করে, যা Java এর রানটাইম মেমরি আলোকিত রাখে। এই স্পেসে পুরানো অবজেক্ট, সার্ভাইভর স্পেস, এবং পার্মেনেন্ট জেনারেশন অন্তর্ভুক্ত থাকে। গারবেজ কালেকশন প্রক্রিয়া এগুলোর মধ্যে যেগুলি অব্যবহৃত (unreachable) হয়ে গেছে, সেগুলি সাফ করে। - পরফরম্যান্স বৃদ্ধি:
একাধিক থ্রেডের ব্যবহার একক থ্রেডের তুলনায় দ্রুত গারবেজ কালেকশন সম্পন্ন করে, এবং বিশেষভাবে যখন Java অ্যাপ্লিকেশন বড় এবং কমপ্লেক্স হয়, তখন এটি পারফরম্যান্সের উন্নতি ঘটাতে সাহায্য করে।
Parallel Full GC এর সুবিধা:
- দ্রুত গারবেজ কালেকশন:
একাধিক থ্রেড ব্যবহার করার ফলে Full GC এর কার্যক্ষমতা অনেক বৃদ্ধি পায় এবং পুরো প্রক্রিয়া দ্রুত সম্পন্ন হয়। - পারফরম্যান্স উন্নতি:
বড় আকারের অ্যাপ্লিকেশন এবং সিস্টেমে যেখানে অনেক ডেটা রয়েছে, সেখানে Parallel Full GC ব্যবহারের মাধ্যমে মেমরি ম্যানেজমেন্ট অনেক দ্রুত হতে পারে, ফলে অ্যাপ্লিকেশন আরও দ্রুত কাজ করতে পারে। - কম লেটেন্সি:
একাধিক থ্রেড ব্যবহারের ফলে গারবেজ কালেকশন প্রক্রিয়ার সময় কমে আসে, যার ফলে latency বা বিলম্ব অনেক কম হয়।
Parallel Full GC এর সীমাবদ্ধতা:
- CPU ব্যবহার বৃদ্ধি:
একাধিক থ্রেড ব্যবহারের ফলে CPU এর উপর চাপ বাড়তে পারে, কারণ এটি একাধিক প্রক্রিয়া সমান্তরালে চালায়। এর ফলে, উচ্চ লোডের পরিবেশে CPU এর উপরে অতিরিক্ত চাপ পড়তে পারে। - বড় মেমরি সিস্টেমে সমস্যা:
যখন সিস্টেমের মেমরি খুব বড় হয়, তখন Full GC অনেক বেশি সময় নিতে পারে এবং এটি অ্যাপ্লিকেশনের পারফরম্যান্সে প্রভাব ফেলতে পারে। - জিরো লেটেন্সি অ্যাপ্লিকেশনগুলোতে উপযুক্ত নয়:
কিছু অত্যন্ত রিয়েল-টাইম এবং লেটেন্সি সেন্সিটিভ অ্যাপ্লিকেশনগুলিতে Parallel Full GC ব্যবহার করা উপযুক্ত নাও হতে পারে, কারণ GC প্রক্রিয়া কিছুটা সময় নিয়ে থাকে এবং সেই সময় অ্যাপ্লিকেশন থামতে পারে।
উপসংহার:
Parallel Full GC হল একাধিক থ্রেডের মাধ্যমে সম্পন্ন হওয়া একটি গারবেজ কালেকশন প্রক্রিয়া, যা Java অ্যাপ্লিকেশনের মেমরি ম্যানেজমেন্টকে আরও দ্রুত এবং কার্যকরী করে। এটি সিস্টেমের পারফরম্যান্স এবং গতি বৃদ্ধিতে সাহায্য করে, তবে কিছু সীমাবদ্ধতা যেমন CPU ব্যবহার এবং লেটেন্সি সমস্যা থাকতে পারে, যা নিশ্চিত করতে হবে যখন এটি ব্যবহার করা হবে। Java 10 এবং পরবর্তী সংস্করণে এটি G1 Garbage Collector-এর মাধ্যমে অন্তর্ভুক্ত করা হয়েছে, যা গারবেজ কালেকশন প্রক্রিয়াকে আরও উন্নত এবং দ্রুত করেছে।
Read more