PermGen আসলে কি জন্য দাঁড়ায়?


122

আমি জানি পার্মজেন কী, কীসের জন্য এটি ব্যবহার করা হচ্ছে, কেন এটি ব্যর্থ হয়, কীভাবে এটি বাড়ানো যায় ইত্যাদি I

আমি যা জানি না তা হ'ল পার্মজেন আসলে যা বোঝায়। স্থায়ী ... জেনার ... কিছু?

PermGen আসলে কি বোঝে কেউ কি জানেন?


1
[ভাল বিবরণ] [1] লোকটির কাছ থেকে যারা জিসি ইন্টার্নাল সম্পর্কে অনেক কিছু জানে। যাইহোক, তার ব্লগে প্রচুর দরকারী জিসি-সম্পর্কিত তথ্য রয়েছে। [1]: ব্লগস.অরাকল.কম
ইভান ডাবরভ

উত্তর:


84

স্থায়ী জেনারেশন। বিশদ অবশ্যই বাস্তবায়ন নির্দিষ্ট।

সংক্ষেপে, এটিতে ক্লাস এবং ইন্টার্নযুক্ত স্ট্রিংগুলির সাথে সম্পর্কিত জাভা অবজেক্ট রয়েছে। ভাগ করে নেওয়ার সাথে সান ক্লায়েন্টের প্রয়োগে, classes.jsaমেমরির প্রাথমিক তথ্য তৈরি করার জন্য মেমরি করা হয়, যার মধ্যে প্রায় অর্ধেক পঠনযোগ্য কেবল এবং অর্ধেক অনুলিপি-অনুলিপি থাকে।

নিছক পুরানো জাভা বস্তুগুলি টেনার্ড জেনারেশনে রাখা হয়েছে।



30
এবং জেডিকে 8-তে কোনও স্থায়ী প্রজন্ম নেই! এই উত্তরটি বছরের পর বছর ধরে বিকশিত হওয়া মজাদার।
ব্রায়ান গর্ডন

3
: @BrianGordon সঠিক .. সেই সম্পর্কে আরও তথ্যের জন্য stackoverflow.com/a/22509753/4557537
Fadi

59

পার্মগেনটি ভারী ভারী ক্লাসগুলি রাখতে জেভিএম ব্যবহার করে। আপনি এটি ব্যবহার করে এটি বাড়িয়ে তুলতে পারেন:

-XX:MaxPermSize=384m

যদি আপনি সান জেভিএম বা ওপেনজেডিকে ব্যবহার করেন।

সুতরাং আপনি যদি একটি আউটঅফমিউরিএক্সেপশন পান: পারমজেন আপনাকে হয় পার্মজেনকে আরও বড় করতে হবে অথবা আপনার ক্লাস লোডার সমস্যা হতে পারে।


6
আপনি এই মন্তব্যটি পোস্ট করার সময় কোন উত্তর গৃহীত হয়েছিল? বর্তমানে গৃহীত উত্তর ( এটি "টম হাটিন - ট্যাকলাইন" দ্বারা) আমার কাছে সঠিক দেখাচ্ছে। আপনার মন্তব্যটি সম্পাদনা করতে বোধগম্য হতে পারে যাতে এটি বর্তমান গ্রহণযোগ্য উত্তরগুলিকে অবিশ্বাসের দিকে পরিচালিত করে না?
jbyler


8

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

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




3

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


1

পার্মজেন এর অর্থ স্থায়ী জেনারেশন। এটি জেভিএম মেমরির অন্যতম একটি অঞ্চল। এটি ম্যাক্সপার্মসাইজ নামে একটি পতাকা ব্যবহার করে স্থির আকারের হ্যাপের অংশ।

নাম "পার্মগেন" কেন?

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.