জাভাতে আবর্জনা সংগ্রহ: আপনার জানা দরকার



জাভাতে আবর্জনা সংগ্রহ সম্পর্কিত এই নিবন্ধটি আপনাকে জাভাতে আবর্জনা সংগ্রহের অধীনে এটি কীভাবে কাজ করে, এটির ধরণ এবং বিভিন্ন পদ্ধতি সম্পর্কে পরিষ্কার ধারণা দেয়

একটি সাধারণ উদ্দেশ্যমূলক প্রোগ্রামিং ভাষা এবং যদি আপনি এমন কোনও পরিস্থিতি নিয়ে আসেন যেখানে আপনার প্রোগ্রামে অব্যবহৃত ডেটা রয়েছে এবং আপনি কীভাবে এটি পরিচালনা করতে জানেন না, জাভাতে আবর্জনা সংগ্রহ কার্যকর হয়। সুতরাং, এই ফাংশনগুলি পরিচালনা করার জন্য আপনাকে সহায়তা করার জন্য আমি এই নিবন্ধটি লিখছি।

আমি নিম্নলিখিত ক্রমে বিষয়গুলি আবরণ করব:





চল শুরু করি!

জাভাতে আবর্জনা সংগ্রহ কী?

জাভাতে প্রোগ্রামাররা এটিকে ধ্বংস করতে ইস্যুটির মুখোমুখি বস্তু যেগুলি ব্যবহারের বাইরে। তবে আবর্জনা সংগ্রাহকের সাথে এটি সহজেই যত্ন নেওয়া যেতে পারে। এই আবর্জনা সংগ্রাহকের মূল উদ্দেশ্য হ'ল অস্তিত্বগুলিকে ধ্বংস করে মেমরি মুক্ত করা কোনও উল্লেখ নেই। প্রযুক্তি হিসাবে পরিচিত হয় আবর্জনা সংগ্রহ.



এটি এমন একটি প্রোগ্রাম হিসাবেও বিবেচিত যা স্বয়ংক্রিয় মেমরি পরিচালনা সম্পাদন করতে সহায়তা করে। কখন জেভিএম চালিত হয়, objectsিবিতে অবজেক্ট তৈরি করা হয় যা আসলে মেমরির একটি অংশ যা প্রোগ্রামটিতে উত্সর্গীকৃত। শেষ পর্যন্ত, কিছু বস্তুর আর প্রয়োজন হবে না। দ্য আবর্জনা সংগ্রহকারী এই অব্যবহৃত বস্তুগুলি সন্ধান করে এবং কিছু স্মৃতি মুক্ত করতে এগুলি মুছে দেয়।

  • মেমরি বরাদ্দ না করে এমন প্রোগ্রামগুলি শেষ পর্যন্ত ভেঙে যেতে পারে যখন সিস্টেমে বরাদ্দ দেওয়ার কোনও স্মৃতি নেই। এই সমস্ত প্রোগ্রাম মেমরি ফাঁস আছে বলা হয়।
  • জাভাতে আবর্জনা সংগ্রহ কোনও প্রোগ্রামের জীবদ্দশায় স্বয়ংক্রিয়ভাবে ঘটে, মেমরির ডি-বরাদ্দ করার প্রয়োজনীয়তাটি হ্রাস করে এবং তাই মেমরি ফাঁস এড়ানো।
  • পদ্ধতি পছন্দ বিনামূল্যে () সি এবং মুছে ফেলা() সি ++ এ ব্যবহৃত হয় তবে জাভাতে এটি স্বয়ংক্রিয়ভাবে সঞ্চালিত হয়। সুতরাং, আরও ভাল মেমরি পরিচালনা প্রদান করে।

এখন, আসুন বুঝতে পারি জাভাতে এই স্বয়ংক্রিয় আবর্জনা সংগ্রহ কীভাবে কাজ করে।

বিঃদ্রঃ : কোনও বস্তু যদি অ্যাক্সেসযোগ্য হয় তবে আবর্জনা সংগ্রহের জন্য যোগ্য বলে মনে করা হচ্ছে।



ডাবল ইনট জাভা রূপান্তর

কীভাবে আবর্জনা সংগ্রহ কাজ করে?

আবর্জনা সংগ্রহ হিপ মেমরির সাথে কাজ করার একটি প্রক্রিয়া চিহ্ন বা অ্যাক্সেসযোগ্য অবজেক্টগুলি সনাক্ত করুন এবং সংযোগের মাধ্যমে তাদের ধ্বংস করুন।

জাভাতে আবর্জনা সংগ্রহ একটি স্বয়ংক্রিয় প্রক্রিয়া এবং প্রোগ্রামারটিকে মুছে ফেলার জন্য পরিষ্কারভাবে চিহ্নিত করতে হবে না। বাস্তবায়ন প্রধানত বাস । প্রতিটি জেভিএম আবর্জনা সংগ্রহ বাস্তবায়ন করতে পারে। একমাত্র প্রয়োজনীয়তা হল এটি JVM স্পেসিফিকেশন পূরণ করা উচিত।

যদিও অনেকগুলি জেভিএম উপলব্ধ রয়েছে, ওরাকল এর হটস্পট এটি এখন পর্যন্ত সবচেয়ে সাধারণ কারণ এটি জঞ্জাল সংগ্রহের বিকল্পগুলির একটি দৃ and় এবং পরিপক্ক সেট সরবরাহ করে।

  • হটস্পটে বিভিন্ন জঞ্জাল সংগ্রহকারী রয়েছে যা বিভিন্ন ব্যবহারের ক্ষেত্রে অনুকূল হয় এবং সমস্ত আবর্জনা সংগ্রহকারী একই বেসিক প্রক্রিয়াটি অনুসরণ করে।
  • প্রথম পদক্ষেপে, অবাস্তব বস্তু চিহ্নিত এবং আবর্জনা সংগ্রহের জন্য প্রস্তুত হিসাবে চিহ্নিত হিসাবে চিহ্নিত করা হয়।
  • দ্বিতীয় ধাপে, চিহ্নিত বস্তুগুলি মুছে ফেলা হয়। Allyচ্ছিকভাবে, ময়লা আবর্জনা সংগ্রহকারী অবজেক্টগুলি মুছে ফেলার পরে মেমরিটি কমপ্যাক্ট করা যেতে পারে, সুতরাং অবশিষ্ট অবজেক্টগুলি গাদা শুরু হওয়ার পরে একটি সংলগ্ন ব্লকের মধ্যে রয়েছে। কমপ্যাকশন প্রক্রিয়া বিদ্যমান অবজেক্টগুলিতে বরাদ্দ হওয়া মেমরির ব্লকের পরে ক্রমান্বয়ে নতুন অবজেক্টগুলিতে মেমরি বরাদ্দ করা সহজ করে তোলে।

হটস্পটের সমস্ত আবর্জনা সংগ্রহকারীরা প্রজন্মের সংগ্রহের কৌশল প্রয়োগ করে যা বয়স অনুসারে বস্তুকে শ্রেণিবদ্ধ করে। প্রজন্মের আবর্জনা সংগ্রহের পিছনে যুক্তিটি হ'ল বেশিরভাগ বস্তু স্বল্পস্থায়ী এবং তৈরি হওয়ার পরে শীঘ্রই আবর্জনা সংগ্রহের জন্য প্রস্তুত হবে।

জাভাতে গাদা এবং স্ট্যাক মেমরি

এখন আসুন দেখে নেওয়া যাক বিভিন্ন ধরণের আবর্জনা সংগ্রহকারী কী।

আবর্জনা সংগ্রহকারী প্রকারের

জেভিএম চারটি বিভিন্ন আবর্জনা সংগ্রহকারী সরবরাহ করে, এগুলি সমস্ত প্রজন্মের। প্রত্যেকের নিজস্ব সুবিধা এবং সীমাবদ্ধতা রয়েছে। কোন আবর্জনা সংগ্রাহক ব্যবহারকারীর সাথে মিথ্যা ব্যবহার করবেন তা পছন্দ করে এবং থ্রুপুট এবং অ্যাপ্লিকেশন বিরতিতে বিভিন্ন পার্থক্য থাকতে পারে।

এখানে 4 ধরণের আবর্জনা সংগ্রহকারী রয়েছে।

  • সিরিয়াল আবর্জনা সংগ্রহকারী (জিসি) :সমস্ত আবর্জনা সংগ্রহের ইভেন্টগুলি একক থ্রেডে ক্রমিকভাবে পরিচালিত হয়। প্রতিটি আবর্জনা সংগ্রহের পরে সংযোগ কার্যকর করা হয়।
  • সমান্তরাল / থ্রুপুট জিসি: ছোট / ছোট আবর্জনা সংগ্রহের জন্য একাধিক থ্রেড ব্যবহৃত হয়। প্রধান জঞ্জাল সংগ্রহ এবং ওল্ড জেনারেশন সংযোগের জন্য একটি একক থ্রেড ব্যবহৃত হয়। এছাড়াও, সমান্তরাল বৈকল্পিক বড় আবর্জনা সংগ্রহ এবং ওল্ড জেনারেশন সংযোগের জন্য একাধিক থ্রেড ব্যবহার করে।
  • সিএমএস কালেক্টর :সমান্তরাল হিসাবে একই অ্যালগরিদম ব্যবহার করে ছোট / গৌণ আবর্জনা সংগ্রহের জন্য একাধিক থ্রেড ব্যবহৃত হয়। আবর্জনা সংগ্রহের বেশিরভাগ অংশ বহু-থ্রেডযুক্ত, তবে অ্যাপ্লিকেশন ইভেন্টগুলি হ্রাস করতে অ্যাপ্লিকেশন প্রক্রিয়াগুলির পাশাপাশি সিএমএস একই সাথে চলমান। কোনও সংযোগ সঞ্চালিত হয় না।
  • জি 1 সংগ্রাহক :এই আবর্জনা সংগ্রহকারী মূলত সিএমএসের প্রতিস্থাপন হিসাবে উদ্দিষ্ট। এটি সিএমএসের মতো সমান্তরাল এবং সমবর্তী, তবে এটি পুরানো আবর্জনা সংগ্রহকারীদের সাথে তুলনা করলে এটি বেশ আলাদাভাবে কাজ করে।

আসুন জাভায় আবর্জনা সংগ্রহের সুবিধাগুলি বুঝতে পারি।

সুবিধাদি

  • জাভা আবর্জনা সংগ্রহের সবচেয়ে বড় সুবিধা হ'ল এটি স্বয়ংক্রিয়ভাবে মুছে ফেলা পরিচালনা করে অব্যবহৃত অবজেক্টস বা এমন কিছু বস্তুর যা মেমোরি সংস্থানগুলি মুক্ত করতে অ্যাক্সেসযোগ্য।
  • আবর্জনা সংগ্রহ এখন অনেক জনপ্রিয় প্রোগ্রামিং ভাষার একটি নতুন মান উপাদান।
  • এটি জাভা মেমরি-দক্ষ করে তোলে। এটি কারণ আবর্জনা সংগ্রাহক হিপ মেমরি থেকে অবাস্তব বস্তুগুলি সরান।
  • এটা স্বয়ংক্রিয়ভাবে সম্পন্ন আবর্জনা সংগ্রহকারী যা জেভিএম এর একটি অংশ is

সেরা অনুশীলন

জাভা জঞ্জাল সংগ্রহের সাথে খাপ খাইয়ে নিতে সর্বোত্তম পন্থা হ'ল জেভিএমে পতাকা লাগানো। পতাকা ব্যবহারের জন্য আবর্জনা সংগ্রহকারীকে সামঞ্জস্য করার ক্ষমতা রাখে। এটি এটিকে ব্যাকএন্ড প্রসেসিংয়ের জন্য সবচেয়ে উপযুক্ত হিসাবে তৈরি করতে সহায়তা করে যেখানে আবর্জনা সংগ্রহের জন্য দীর্ঘ বিরতি গ্রহণযোগ্য।

এখানে অন্য একটি বিষয় লক্ষণীয়, সিএমএস আবর্জনা সংগ্রাহক বিরতি হ্রাস করার জন্য ডিজাইন করা হয়েছে যা এটি জিইউআই অ্যাপ্লিকেশনগুলির জন্য আদর্শ করে তোলে যেখানে প্রতিক্রিয়াশীলতা অত্যন্ত গুরুত্বপূর্ণ। গাদা বা তার বিভাগগুলির আকার পরিবর্তন করে এবং আবর্জনা সংগ্রহের দক্ষতা পরিমাপ করে অতিরিক্ত সূক্ষ্ম সুরকরণ সম্পাদন করা যেতে পারে।

আসুন এই প্রোগ্রামটি একবার দেখুন।

ক্লাস এডুরেকা {ইন্ট ইন্ট বি পাবলিক শূন্য সেটডেটা (ইন সি, ইনট ডি) {এ = সিবি = ডি} পাবলিক অকার্যকর শোডাটা () {System.out.println ('a =' + এর মান) System.out.println ('বি =' + এর মান)} পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং আরগস []) {এডুরেকা ই 1 = নতুন এডুরেকা () এডুরেকা ই 2 = নতুন এডুরেকা () e1.setData (1,2) e2.setData (3, 4) e1.showData () e2.showData () // Edureka e3 // e3 = e2 //e3.showData () // e2 = নাল //e3.showData () // e3 = নাল //e3.showData ()}}

এই ক্ষেত্রে, দুইঅবজেক্ট এবং দুটি রেফারেন্স ভেরিয়েবল তৈরি করা হয়। যদি আপনি অন্য কমান্ড e3 = নাল যোগ করেন তবেদুটি রেফারেন্স ভেরিয়েবল একই বস্তুকে নির্দেশ করবে। এবং যদি ভেরিয়েবলটির কোনও রেফারেন্স না থাকে, e3 = e2e3.showData () এই মুহুর্তে, কোনও বস্তুটির দিকে নির্দেশ করে কোনও রেফারেন্স নেই এবং এটি আবর্জনা সংগ্রহের জন্য যোগ্য হয়ে ওঠে।

এটি আমাদের এই 'জাভাতে আবর্জনা সংগ্রহ' নিবন্ধের শেষের দিকে নিয়ে আসে। আমরা শিখেছি কীভাবে অবধি অব্যবহৃত জিনিসগুলি হিপ এবং বিভিন্ন ধরণের সংগ্রহের মধ্যে সরিয়ে ফেলা যায়।

শেফ একটি অর্কেস্ট্রেশন সরঞ্জাম

যদি আপনি 'জাভাতে আবর্জনা সংগ্রহ' এ এই নিবন্ধটি পেয়ে থাকেন তবে এটি দেখুন বিশ্বজুড়ে ছড়িয়ে থাকা 250,000 এরও বেশি সন্তুষ্ট শিক্ষার্থীর নেটওয়ার্ক সহ একটি বিশ্বস্ত অনলাইন লার্নিং সংস্থা এডুরেকা দ্বারা। আমরা আপনার যাত্রার প্রতিটি পদক্ষেপে আপনাকে সহায়তা করতে এখানে আছি, আমরা এমন একটি পাঠ্যক্রম নিয়ে এসেছি যা জাভা বিকাশকারী হতে চান এমন শিক্ষার্থী এবং পেশাদারদের জন্য নকশাকৃত।

আমাদের জন্য একটি প্রশ্ন আছে? দয়া করে এটি 'জাভায় আবর্জনা সংগ্রহের মন্তব্য বিভাগে উল্লেখ করুন ' এবং যত তাড়াতাড়ি সম্ভব আপনার কাছে ফিরে আসব।