স্ট্যাটিক পদ্ধতি (আসলে সমস্ত পদ্ধতি) পাশাপাশি স্ট্যাটিক ভেরিয়েবলগুলি PermGen
গাদা বিভাগে সংরক্ষণ করা হয় , যেহেতু তারা প্রতিবিম্বের ডেটার অংশ (শ্রেণি সম্পর্কিত ডেটা, উদাহরণ সম্পর্কিত নয়)।
স্পষ্টতার জন্য আপডেট :
মনে রাখবেন যে কেবল পরিবর্তনশীল এবং তাদের প্রযুক্তিগত মানগুলি (আদিম বা রেফারেন্স) পার্মজেন স্পেসে সঞ্চিত রয়েছে।
যদি আপনার স্ট্যাটিক ভেরিয়েবলটি কোনও অবজেক্টের রেফারেন্স হয় তবে অবজেক্টটি নিজেই গাদা (যুবক / পুরাতন প্রজন্ম বা বেঁচে থাকা স্থান) এর সাধারণ বিভাগে সংরক্ষণ করা হয়। এই বস্তুগুলি (যদি না তারা শ্রেণি ইত্যাদির মতো অভ্যন্তরীণ বস্তু না হয়) পার্মজেন স্পেসে সংরক্ষণ করা হয় না ।
উদাহরণ:
static int i = 1; //the value 1 is stored in the PermGen section
static Object o = new SomeObject(); //the reference(pointer/memory address) is stored in the PermGen section, the object itself is not.
আবর্জনা সংগ্রহের উপর একটি শব্দ:
এটি চালানোর গ্যারান্টিযুক্ত না হওয়ায় নির্ভর করবেন নাfinalize()
। কোনও জিনিস আবর্জনা সংগ্রহের জন্য যোগ্য হলেও, জঞ্জাল সংগ্রহকারী কখন চালাবেন এবং কী কী সংগ্রহ করবেন তা সিদ্ধান্ত নেওয়ার বিষয়টি পুরোপুরি জেভিএমের।
অবশ্যই আপনি নালার জন্য একটি স্ট্যাটিক ভেরিয়েবল সেট করতে পারেন এবং এইভাবে স্তূপে অবস্থানের রেফারেন্সটি সরিয়ে ফেলতে পারেন তবে এর অর্থ এই নয় যে আবর্জনা সংগ্রহকারী এটি সংগ্রহ করবেন (এমনকি আরও কোনও উল্লেখ না থাকলেও)।
অতিরিক্তভাবে finalize()
কেবল একবার চালানো হয়, সুতরাং আপনাকে নিশ্চিত করতে হবে যে এটি ব্যতিক্রম ছুঁড়ে না ফেলে অন্যথায় অবজেক্টটি সংগ্রহ করা আটকাবে না। যদি আপনি কিছু ব্যতিক্রমের মাধ্যমে চূড়ান্তকরণ বন্ধ finalize()
করে দেন তবে একই জিনিসটিতে দ্বিতীয়বার ডাকা হবে না।
একটি চূড়ান্ত নোট : কীভাবে কোড, রানটাইম ডেটা ইত্যাদি সংরক্ষণ করা হয় তা জেভিএমের উপর নির্ভর করে যা ব্যবহৃত হয়, যেমন হটস্পট এটি জেআরকিট থেকে আলাদাভাবে করতে পারে এবং এটি একই জেভিএমের সংস্করণগুলির মধ্যেও পৃথক হতে পারে। উপরেরগুলি জাভা 5 এবং 6 এর জন্য হটস্পটের উপর ভিত্তি করে (সেগুলি মূলত একই) কারণ উত্তর দেওয়ার সময় আমি বলতাম যে বেশিরভাগ লোকেরা সেই জেভিএম ব্যবহার করেছিল। জাভা 8-র হিসাবে মেমরির মডেলটিতে বড় পরিবর্তনগুলির কারণে, উপরের বিবৃতিগুলি জাভা 8 হটস্পটের ক্ষেত্রে সঠিক হতে পারে না - এবং আমি জাভা 7 হটস্পটের পরিবর্তনগুলি পরীক্ষা করে দেখিনি, তাই অনুমান করি যে উপরেরটি এখনও সেই সংস্করণটির জন্য সত্য, তবে আমি এখানে নিশ্চিত নই।