2014-09-25 8 views
11

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

+1

दिलचस्प अतिथि, लेकिन टिप्पणी के बिना नकारात्मक वोट क्यों हैं? किसी को JVM से हेडहर्ट मिल रहा है? – jkj

+0

मुझे केवल एक नकारात्मक वोट दिखाई देता है –

उत्तर

15

ओपैप एक ऐसी संरचना है जो रिकॉर्ड करती है कि जावा स्टैक पर ऑब्जेक्ट संदर्भ (ओओपी) कहां स्थित हैं। इसका प्राथमिक उद्देश्य जावा स्टैक पर जीसी जड़ों को ढूंढना और जब भी ढेर के भीतर वस्तुओं को स्थानांतरित किया जाता है तो संदर्भों को अपडेट करना है। व्याख्या तरीकों के लिए

  1. OopMaps:

    OopMaps के तीन प्रकार होते हैं। वे आलसी गणना की जाती हैं, यानी जब जीसी होता है, बाइटकोड प्रवाह का विश्लेषण करके।

  2. के लिए ओपमैप्स जेआईटी-संकलित विधियों। वे जेआईटी-संकलन के दौरान उत्पन्न होते हैं और संकलित कोड के साथ बनाए जाते हैं ताकि वीएम जल्दी से स्टैक स्थानों और रजिस्टरों को संबोधित कर सके जहां ऑब्जेक्ट संदर्भ आयोजित किए जाते हैं।
  3. उत्पन्न साझा रनटाइम स्टब्स के लिए ओपमैप्स। इन मानचित्रों को डेवलपर्स द्वारा मैन्युअल रूप से बनाया गया है - इन रनटाइम स्टब्स के लेखकों।
+0

यह बहुत अच्छा जवाब है, लेकिन अगर मैं अनुचित नहीं हूं तो मैं और जानना चाहता हूं: 1) व्याख्या किए गए तरीकों के लिए ओपमैप्स। वे आलसी गणना की जाती हैं, यानी जब जीसी होता है, बाइटकोड प्रवाह का विश्लेषण करके। >>>>>>>> ये जानकारी JVM में कहां संग्रहीत की जाती है? उनके बारे में कोई विस्तृत संदर्भ कैसे गणना की जाती है? या ओपनजेडीके में बस स्रोत कोड फाइलें? 2) तो जब जीसी होता है, और थ्रेड सुरक्षित बिंदु पर जाता है, तो JVM वर्तमान सुरक्षित बिंदु में ओप मैप्स को चेक करके वर्तमान थ्रेड के लिए सभी जीसी रूट सेट को आसानी से पा सकता है। क्या सही है? बहुत बहुत धन्यवाद। –

+1

@BillRanderson 1) सबसे अच्छा संदर्भ स्रोत कोड (अच्छी तरह से प्रलेखित बीटीडब्ल्यू) है: [generOopMap.cpp] (http://hg.openjdk.java.net/jdk7u/jdk7u/hotspot/file/d638e49facb6/src/share/ वी एम/उफ़/generateOopMap.cpp)। InterpreterOopMap [OopMapCache] में संग्रहीत हैं (http://hg.openjdk.java.net/jdk7u/jdk7u/hotspot/file/d638e49facb6/src/share/vm/interpreter/oopMapCache.hpp)। – apangin

+2

@ बिलरैंडसन 2) जीसी के दौरान जेवीएम सभी थ्रेड स्टैक के माध्यम से चलता है। प्रत्येक ढेर को ढेर फ्रेम की धारा के रूप में पार्स किया जाता है। फ्रेम या तो व्याख्या या संकलित या स्टब्स हैं। व्याख्या किए गए फ़्रेम में जावा विधि और बीसीआई (बाइटकोड इंडेक्स) के बारे में जानकारी होती है। OopMapCache दिए गए विधि और बीसीआई से संबंधित ओपैप खोजने में मदद करता है। एक संकलित फ्रेम की विधि निर्देश पता लुकअप द्वारा खोजा जाता है। संकलित विधियों में कोड के साथ ओपमैप्स होते हैं। – apangin

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