2012-02-01 10 views
15

मैं हॉटस्पॉट जेवीएम की स्मृति संरचना को समझने की कोशिश कर रहा था और दो शर्तों 'विधि क्षेत्र' और 'पर्मजेन' अंतरिक्ष से उलझन में था। मेरे द्वारा संदर्भित दस्तावेज़ों का कहना है कि विधि क्षेत्र में बाइट कोड सहित कक्षाओं और विधियों की परिभाषा शामिल है। कुछ अन्य दस्तावेज़ कहते हैं कि वे PermGen अंतरिक्ष में संग्रहीत हैं।विधि क्षेत्र और PermGen

तो क्या मैं निष्कर्ष निकाल सकता हूं कि ये दो स्मृति क्षेत्र समान हैं?

+0

अद्यतन: शब्दों पर java8 से कोई PermGen नहीं है, और सभी वर्ग, विधि, स्ट्रिंग इंटर्न मेटास्पेस में संग्रहीत हैं। लिंक: http://karunsubramanian.com/websphere/one-important-change-in-memory-management-in-java-8/ –

उत्तर

11

आपको Java Memory Types पर और वैकल्पिक रूप से जावा में Garbage Collection के बारे में इस दस्तावेज़ पर एक नज़र डालना चाहिए। उत्तरार्द्ध बहुत verbose है और दोनों उपयोगी हैं।

एक तीसरी पीढ़ी बारीकी से पर्याप्त पीढ़ी से संबंधित स्थायी पीढ़ी है:

असल में विधि क्षेत्र स्थायी पीढ़ी का एक हिस्सा है। स्थायी पीढ़ी विशेष है क्योंकि में वर्चुअल मशीन द्वारा आवश्यक डेटा का वर्णन करने के लिए जावा भाषा स्तर पर समानता नहीं है। उदाहरण के लिए कक्षाओं और विधियों का वर्णन करने वाली वस्तुओं स्थायी पीढ़ी में संग्रहीत हैं।

5

आप कर सकते थे, "विधि क्षेत्र" "PermGen" के एक सबसेट पर विचार करें, के रूप में स्थायी पीढ़ी अंतरिक्ष कभी खारिज किया जा करने के लिए वर्ग defintions पकड़ करता है, लेकिन यह भी प्रशिक्षु धारण तार और संभावना नहीं डेटा के अन्य बिट्स

+0

लेकिन यह केवल पर्मजेन सबसेट नहीं है, परमगेन स्पेस के बाहर एक विधि क्षेत्र हो सकता है, दाएं ? – falsarella

+1

नहीं, मेरी समझ यह है कि इस तरह का डेटा पर्मजेन में जाता है। –

+1

अद्यतन: आंतरिक तारों को जावा 7 से मुख्य ढेर में संग्रहीत किया जाता है। http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html#jdk7changes –

3

विधि क्षेत्र मूल रूप से स्टैक जैसे गैर ढेर स्थान है जो वर्ग कंकाल रखता है। कंकाल में मूल्य, कन्स्ट्रक्टर इत्यादि के साथ स्थिर चर शामिल हैं। प्रतिबिंब ऑपरेशन इस स्मृति क्षेत्र पर संचालित होता है। पर्म वर्तमान निष्पादन वर्ग के बाइनरी कोड को बनाए रखने के साथ समानांतर मेमोरी स्पेस है।

1

http://www.pointsoftware.ch/en/under-the-hood-runtime-data-areas-javas-memory-model/ एक बहुत अच्छा विचार देता है जिसे मैंने कहीं और पाया है।

अधिकांश लोग समकक्ष के रूप में हीप और स्टैक के बारे में बात करते हैं, और मुख्य घटक के रूप में, लेकिन ताई शानदार छवियों के साथ एक तस्वीर-परिपूर्ण स्पष्टीकरण देता है।

संबंधित मुद्दे