জাভা মেমরি প্রোফাইলিং সম্পর্কে শিখার সময়, আমি "গাদা" ছাড়াও "পার্ম স্পেস" শব্দটি দেখতে থাকি। আমি জানি যে গাদাটি কী - পারম স্পেস কী?
জাভা মেমরি প্রোফাইলিং সম্পর্কে শিখার সময়, আমি "গাদা" ছাড়াও "পার্ম স্পেস" শব্দটি দেখতে থাকি। আমি জানি যে গাদাটি কী - পারম স্পেস কী?
উত্তর:
এটি স্থায়ী প্রজন্মের জন্য দাঁড়িয়েছে :
স্থায়ী প্রজন্মটি বিশেষ কারণ এটি মেটা ডেটা ধারণ করে যা ব্যবহারকারীর ক্লাসগুলি বর্ণনা করে (ক্লাসগুলি যা জাভা ভাষার অংশ নয়)। এই জাতীয় মেটা-উদাহরণগুলির উদাহরণগুলি শ্রেণি এবং পদ্ধতিগুলি বর্ণনা করে এমন বস্তু এবং সেগুলি স্থায়ী জেনারেশনে সংরক্ষণ করা হয়। বৃহত কোড-বেস সহ অ্যাপ্লিকেশনগুলি
java.lang.OutOfMemoryError
হিপগুলির এই বিভাগটি দ্রুত পূরণ করতে পারে যার কারণ ঘটবে: পারমজেন আপনার-এক্সএমএক্স কত উচ্চ এবং মেশিনে আপনার কত স্মৃতি রয়েছে তা বিবেচনা করে না।
Perm space
লোড হওয়া ক্লাস এবং অন্যান্য কয়েকটি উন্নত বৈশিষ্ট্যগুলির String Pool
( যেমন উচ্চতর অনুকূলিত স্ট্রিং সমতা পরীক্ষার জন্য) তথ্য রাখার জন্য ব্যবহৃত হয় , যা সাধারণত String.intern()
পদ্ধতি দ্বারা তৈরি হয় । আপনার অ্যাপ্লিকেশন (শ্রেণীর সংখ্যা) বাড়ার সাথে সাথে এই স্থানটি দ্রুত পূর্ণ হয়ে যাবে, যেহেতু এই স্পেসের আবর্জনা সংগ্রহ প্রয়োজনীয় হিসাবে পরিষ্কার করা খুব কার্যকর নয়, আপনি দ্রুত মেমরি থেকে বেরিয়ে যাবেন: পেরেন জেন স্পেস ত্রুটি। তারপরে, কোনও বিশাল শূন্য জেভিএম থাকার পরেও কোনও অ্যাপ্লিকেশন সেই মেশিনে কার্যকরভাবে চলবে না।
আপনার আবেদন শুরু করার আগে আপনার java -XX:MaxPermSize
এই ত্রুটি থেকে মুক্তি পাওয়া উচিত rid
পারম জেনার অর্থ স্থায়ী প্রজন্ম যা ক্লাস সম্পর্কে মেটা-ডেটা তথ্য ধারণ করে।
পার্মজেন স্পেস সর্বদা মেথড এরিয়া হিসাবে পরিচিত class যখন ক্লাসলোডার সাবসিস্টেম ক্লাস ফাইল (বাইট কোড) মেথড এরিয়াতে (প্যারেজেন) লোড করবে। এটিতে সমস্ত শ্রেণীর মেটাডেটা রয়েছে যেমন: আপনার শ্রেণীর পুরোপুরি যোগ্যতা প্রাপ্ত নাম, তাত্ক্ষণিক পিতামাতার শ্রেণীর সম্পূর্ণরূপে যোগ্য নাম, ভেরিয়েবল ইনফো, কনস্ট্রাক্টরের তথ্য, ধ্রুবক পুল ইনফো ইত্যাদি etc.
প্রেমজেনের অধীনে যা বিদ্যমান: ক্লাস এরিয়া প্রেমজেন অঞ্চলে আসে। স্ট্যাটিক ক্ষেত্রগুলি ক্লাস লোডিংয়ের সময়ও বিকাশ করা হয়, তাই সেগুলি প্রেমজেনেও বিদ্যমান। স্ট্রিংয়ের মতো পুল করা সমস্ত অপরিবর্তনীয় ক্ষেত্রগুলি সহ কনস্ট্যান্ট পুল অঞ্চলটি এখানে রাখা হয়েছে। এগুলি ছাড়াও, শ্রেণি লোডার দ্বারা লোড করা ক্লাসের ডেটা, অবজেক্ট অ্যারে, জেভিএম দ্বারা ব্যবহৃত অভ্যন্তরীণ সামগ্রীগুলিও অবস্থিত।
পার্মজেন স্পেস স্থায়ী প্রজন্মের জন্য মেমরি বরাদ্দকে বোঝায় যে সমস্ত জাভা অপরিবর্তনীয় বস্তু এই বিভাগের আওতায় আসে, যেমনটি String
আক্ষরিক বা String.intern()
পদ্ধতিতে এবং ক্লাসগুলি স্মৃতিতে লোড করার জন্য তৈরি করা হয়। পার্মজেন স্পেস আমাদের স্ট্রিং সমতা অনুসন্ধানের গতি বাড়ায়।