java পলিমরফিজম - জাভা হিপ পরিভাষা:তরুণ, পুরানো এবং স্থায়ী প্রজন্ম?



ক্লাস কি (5)

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

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

আমার প্রশ্নগুলি হল:

  • তরুণ প্রজন্ম কি?
  • পুরাতন প্রজন্ম কি?
  • স্থায়ী প্রজন্ম কি?
  • কিভাবে তিন প্রজন্মের একে অপরের সাথে যোগাযোগ / সম্পর্ক?

এটি একটি সাধারণ ভুল বোঝার মত মনে হয়। ওরাকলের JVM এ, স্থায়ী প্রজন্মের হিপ অংশ নয়। এটা ক্লাস সংজ্ঞা এবং সম্পর্কিত তথ্য জন্য একটি পৃথক স্থান। জাভা 6 এবং তার আগে, অভ্যন্তরীণ স্ট্রিং স্থায়ী প্রজন্মের মধ্যে সংরক্ষণ করা হয়েছিল। জাভা 7 এ, অভ্যন্তরীণ স্ট্রিংগুলি মূল বস্তু হিপে সংরক্ষণ করা হয়।

এখানে স্থায়ী প্রজন্মের একটি ভাল পোস্ট।

আমি জ্যাকনসোল- এ ওরাকলের নির্দেশিকাতে প্রতিটি স্পেসের জন্য প্রদত্ত বিবরণগুলি পছন্দ করি:

হটস্পট জাভা ভিএমের জন্য সিরিয়াল আবর্জনা সংগ্রহের মেমরি পুলগুলি নিম্নরূপ।

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

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


SunHotSpot এ স্মৃতি JVM তিন প্রজন্মের মধ্যে সংগঠিত: তরুণ প্রজন্ম, পুরাতন প্রজন্ম এবং স্থায়ী প্রজন্ম।

  • তরুণ প্রজন্ম: নতুন তৈরি বস্তু তরুণ জেনারকে বরাদ্দ করা হয়।
  • ওল্ড জেনারেশন: নতুন বস্তু বৃহত্তর হিপ স্পেসের জন্য অনুরোধ করলে, এটি পুরানো জেনের মধ্যে সরাসরি বরাদ্দ করা হয়। এছাড়াও কয়েকটি জিসি চক্র বেঁচে থাকা বস্তুগুলি পুরাতন জেনারেটে দীর্ঘ পুরাতন বস্তুগুলির ঘর হিসাবে প্রচারিত হয়।
  • স্থায়ী প্রজন্ম: স্থায়ী প্রজন্মের এমন বস্তু রয়েছে যা জাভিএম বর্জ্য সংগ্রহকারীর পরিচালনা করার জন্য সুবিধাজনক বলে মনে করে, যেমন ক্লাস এবং পদ্ধতি বর্ণনা করে এমন বস্তু, পাশাপাশি ক্লাস এবং পদ্ধতিগুলিও।

FYI: স্থায়ী জেন জাভা হিপের অংশ হিসাবে বিবেচিত হয় না।

কিভাবে তিন প্রজন্মের একে অপরের সাথে যোগাযোগ / সম্পর্ক? বস্তুগুলি (বড়গুলি ছাড়া) প্রথমটি তরুণ প্রজন্মকে বরাদ্দ করা হয়। যদি কোন বস্তু x সংখ্যা পরে জীবিত থাকে। আবর্জনা সংগ্রহ চক্রের এটি পুরানো / টেকসই জেনারেল উন্নীত করা হয়। অতএব আমরা বলতে পারি যে তরুণ প্রজন্মের স্বল্পকালীন বস্তু রয়েছে এবং পুরাতন জিনটিতে দীর্ঘ জীবন থাকা বস্তু রয়েছে। স্থায়ী জেন জেন অন্যান্য দুই প্রজন্মের সাথে যোগাযোগ করে না।


হিপ নিম্নরূপ তরুণ এবং পুরাতন প্রজন্মের মধ্যে বিভক্ত করা হয়:

তরুণ প্রজন্ম : এটি এমন স্থান যেখানে স্বল্প সময়ের জন্য বসবাস করা হয়েছে এবং দুটি স্থান ভাগ করা হয়েছে:

  • এডেন স্পেস : যখন এই স্থানটিতে বরাদ্দ করা নতুন কীওয়ার্ড মেমরি ব্যবহার করে বস্তু তৈরি করা হয়।
  • সারভাইভার স্পেস : এই পুলটি রয়েছে যা এডেন স্পেস থেকে জাভা আবর্জনা সংগ্রহের পরে বেঁচে থাকা বস্তুগুলি ধারণ করে।

পুরাতন প্রজন্ম : এই পুলটি মূলত স্থায়ী এবং ভার্চুয়াল (সংরক্ষিত) স্থান ধারণ করে এবং যাহারা জেনারেশন থেকে আবর্জনা সংগ্রহের পরে বেঁচে থাকে সেই বস্তুগুলি ধরে রাখে।

  • টেন্ডার্ড স্পেস: এই মেমরি পুলটিতে এমন বস্তু রয়েছে যা একাধিক আবর্জনা সংগ্রহের পরে বেঁচে থাকে যা সারভাইভার স্পেস থেকে আবর্জনা সংগ্রহের পরে বেঁচে থাকে।

স্থায়ী জেনারেশন: নাম হিসাবে এই মেমরি পুল এছাড়াও স্থায়ী বর্গ মেটাডেটা এবং বর্ণনাকারী তথ্য রয়েছে যাতে PermGen স্থান সবসময় ক্লাসের জন্য সংরক্ষিত এবং স্ট্যাটিক সদস্যদের উদাহরণস্বরূপ ক্লাসের সাথে সংযুক্ত করা হয়।

জাভা 8 আপডেট: পারমজেনকে মেটাস্পেস দিয়ে প্রতিস্থাপিত করা হয়েছে যা খুব অনুরূপ।
প্রধান পার্থক্য হল মেটাস্পেস পুনরায় আকারগুলি গতিশীলভাবে অর্থাৎ, এটি রানটাইম এ প্রসারিত হতে পারে।
জাভা মেটাস্পেস স্পেস: unbounded (ডিফল্ট)

কোড ক্যাশে (ভার্চুয়াল বা রিজার্ভ): যদি আপনি হট স্পট জাভা ভিএম ব্যবহার করেন তবে এটি কোড ক্যাশে রয়েছে যার মধ্যে রয়েছে মেমরি যা কম্পাইলেশন এবং নেটিভ কোড সংগ্রহের জন্য ব্যবহার করা হবে।

Courtesy


সার্লেট স্পেসিফিকেশন JSR-315 পরিষেবাটিতে (এবং DOGET, DOPost, DOPUT ইত্যাদি) পদ্ধতিতে ওয়েব ধারক আচরণকে স্পষ্টভাবে সংজ্ঞায়িত করে (2.3.3.1 মাল্টিথ্রেডিং সমস্যাগুলি, পৃষ্ঠা 9):

একটি servlet ধারক servlet এর পরিষেবা পদ্ধতির মাধ্যমে একযোগে অনুরোধ পাঠাতে পারে। অনুরোধগুলি পরিচালনা করার জন্য, Servlet বিকাশকারী অবশ্যই পরিষেবা পদ্ধতিতে একাধিক থ্রেড সহ সমতুল্য প্রক্রিয়াকরণের জন্য পর্যাপ্ত বিধান করতে হবে।

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

সার্লেটগুলি একক থ্রেডমোডেল ইন্টারফেস বাস্তবায়ন না করে, যদি পরিষেবা পদ্ধতি (অথবা ডেট বা ডেটপস্ট যা হটপ সার্ভার বিবরন ক্লাসের পরিষেবা পদ্ধতিতে পাঠানো হয়) সিঙ্ক্রোনাইজড কীওয়ার্ড দিয়ে সংজ্ঞায়িত করা হয়েছে, servlet ধারক ইনস্ট্যান্স পুল পদ্ধতির ব্যবহার করতে পারে না , কিন্তু এটি মাধ্যমে অনুরোধ serialize আবশ্যক। এটি দৃঢ়ভাবে সুপারিশ করা হয় যে বিকাশকারীরা কর্মক্ষেত্রে ক্ষতিকর প্রভাবগুলির কারণে এই পদ্ধতিতে পরিষেবা পদ্ধতি (অথবা এটি প্রেরণ করা পদ্ধতি) সিঙ্ক্রোনাইজ করবে না





java garbage-collection jvm heap-memory