Java Language
बस टाइम (JIT) कंपाइलर में
खोज…
टिप्पणियों
इतिहास
सिमेंटेक जेआईटी संकलक 1.1.5 पर सूर्य जावा में उपलब्ध था, लेकिन इसमें समस्याएं थीं।
हॉटस्पॉट जेआईटी कंपाइलर को 1.2.2 में प्लगइन के रूप में सन जावा में जोड़ा गया था। जावा 1.3 में, JIT को डिफ़ॉल्ट रूप से सक्षम किया गया था।
(स्रोत: जावा को जेआईटी कंपाइलर कब मिला?
अवलोकन
जस्ट-इन-टाइम (JIT) कंपाइलर जावा ™ रनटाइम एनवायरनमेंट का एक घटक है जो रन टाइम के साथ जावा अनुप्रयोगों के प्रदर्शन को बेहतर बनाता है।
- जावा कार्यक्रमों में कक्षाएं शामिल होती हैं, जिनमें प्लेटफ़ॉर्म-न्यूट्रल बायटेकॉड होते हैं, जिन्हें कई अलग-अलग कंप्यूटर आर्किटेक्चर पर एक जेवीएम द्वारा व्याख्या किया जा सकता है।
- रन समय में, जेवीएम कक्षा की फाइलों को लोड करता है, प्रत्येक व्यक्ति के बायोटेक के शब्दार्थ को निर्धारित करता है, और उचित गणना करता है।
व्याख्या के दौरान अतिरिक्त प्रोसेसर और मेमोरी उपयोग का मतलब है कि एक जावा एप्लिकेशन एक मूल एप्लिकेशन की तुलना में अधिक धीमी गति से प्रदर्शन करता है।
JIT संकलक जावा प्रोग्रामों के प्रदर्शन को बेहतर बनाने में मदद करता है जो रन टाइम में देशी मशीन कोड में बायटेकॉड्स को संकलित करता है।
JIT कंपाइलर डिफ़ॉल्ट रूप से सक्षम होता है, और जावा विधि कहे जाने पर सक्रिय होता है। JIT कम्पाइलर उस विधि के बायटेकोड्स को देशी मशीन कोड में संकलित करता है, इसे "just in time"
चलाने के लिए संकलित करता है।
जब कोई विधि संकलित की गई है, तो JVM उस विधि के संकलित कोड को सीधे व्याख्या करने के बजाय कहता है। सैद्धांतिक रूप से, यदि संकलन में प्रोसेसर समय और मेमोरी उपयोग की आवश्यकता नहीं होती है, तो प्रत्येक विधि को संकलित करने से जावा प्रोग्राम की गति को एक देशी एप्लिकेशन के दृष्टिकोण की अनुमति मिल सकती है।
JIT संकलन में प्रोसेसर समय और मेमोरी उपयोग की आवश्यकता होती है। जब जेवीएम पहली बार शुरू होता है, तो हजारों विधियाँ कहलाती हैं। इन सभी विधियों का संकलन स्टार्टअप समय को महत्वपूर्ण रूप से प्रभावित कर सकता है, भले ही कार्यक्रम अंततः बहुत अच्छे शिखर प्रदर्शन को प्राप्त करता हो।
- व्यवहार में, तरीकों को पहली बार संकलित नहीं किया जाता है। प्रत्येक विधि के लिए, JVM एक
call count
रखता है, जिसे हर बार विधि कहा जाता है। - JVM एक विधि की व्याख्या तब तक करता है जब तक कि उसकी कॉल गणना JIT संकलन सीमा से अधिक न हो जाए।
- इसलिए, अक्सर इस्तेमाल किए जाने वाले तरीकों को JVM के शुरू होने के तुरंत बाद संकलित किया जाता है, और कम-उपयोग किए गए तरीकों को बहुत बाद में संकलित किया जाता है, या बिल्कुल नहीं।
- जेआईटी संकलन थ्रेशोल्ड जेवीएम को जल्दी से शुरू करने में मदद करता है और अभी भी प्रदर्शन में सुधार हुआ है।
- स्टार्टअप समय और दीर्घकालिक प्रदर्शन के बीच एक इष्टतम संतुलन प्राप्त करने के लिए सीमा का सावधानीपूर्वक चयन किया गया है।
- एक विधि संकलित होने के बाद, इसकी कॉल गणना शून्य पर रीसेट हो जाती है और विधि के बाद की कॉल इसकी गिनती बढ़ाती रहती है।
- जब किसी विधि की कॉल गणना एक JIT recompilation सीमा तक पहुँचती है, तो JIT संकलक इसे दूसरी बार संकलित करता है, पिछले संकलन की तुलना में अनुकूलन का एक बड़ा चयन लागू करता है।
- अधिकतम अनुकूलन स्तर तक पहुंचने तक इस प्रक्रिया को दोहराया जाता है।
एक जावा प्रोग्राम के सबसे व्यस्त तरीकों को हमेशा सबसे आक्रामक तरीके से अनुकूलित किया जाता है, जो जेआईटी संकलक के उपयोग के प्रदर्शन लाभों को अधिकतम करता है।
JIT कंपाइलर operational data at run time
को भी माप सकता है, और उस डेटा का उपयोग आगे की रीकॉपीलेशन की गुणवत्ता को बेहतर बनाने के लिए कर सकता है।
JIT कंपाइलर को निष्क्रिय किया जा सकता है, इस स्थिति में पूरे जावा प्रोग्राम की व्याख्या की जाएगी। JIT संकलन समस्याओं के निदान या कार्य के अलावा JIT कंपाइलर को अक्षम करने की अनुशंसा नहीं की जाती है।