एंड्रॉइड रनटाइम (एआरटी) में कोड प्रोफाइलिंग के साथ जस्ट-इन-टाइम (जेआईटी) कंपाइलर शामिल होता है जो एंड्रॉइड एप्लिकेशन के चलने के साथ-साथ उनके प्रदर्शन में लगातार सुधार करता है। जेआईटी कंपाइलर एआरटी के वर्तमान समय से पहले (एओटी) कंपाइलर का पूरक है और रनटाइम प्रदर्शन में सुधार करता है, स्टोरेज स्पेस बचाता है, और एप्लिकेशन और सिस्टम अपडेट को गति देता है। यह स्वचालित एप्लिकेशन अपडेट या ओवर-द-एयर (OTA) अपडेट के दौरान एप्लिकेशन के पुन: संकलन के दौरान सिस्टम मंदी से बचकर AOT कंपाइलर में भी सुधार करता है।
हालांकि जेआईटी और एओटी अनुकूलन के समान सेट के साथ एक ही कंपाइलर का उपयोग करते हैं, उत्पन्न कोड समान नहीं हो सकता है। JIT रनटाइम प्रकार की जानकारी का उपयोग करता है, बेहतर इनलाइनिंग कर सकता है, और स्टैक रिप्लेसमेंट (OSR) संकलन को संभव बनाता है, जो सभी थोड़ा अलग कोड उत्पन्न करते हैं।
जेआईटी वास्तुकला

जेआईटी संकलन
जेआईटी संकलन में निम्नलिखित गतिविधियां शामिल हैं:

- उपयोगकर्ता ऐप चलाता है, जो तब एआरटी को
.dex
फ़ाइल लोड करने के लिए ट्रिगर करता है।- यदि
.oat
फ़ाइल (.dex
फ़ाइल के लिए AOT बाइनरी) उपलब्ध है, तो ART इसका सीधे उपयोग करता है। यद्यपि.oat
फ़ाइलें नियमित रूप से उत्पन्न होती हैं, उनमें हमेशा संकलित कोड (AOT बाइनरी) नहीं होता है। - यदि
.oat
फ़ाइल में संकलित कोड नहीं है, तो ART.dex
फ़ाइल को निष्पादित करने के लिए JIT और दुभाषिया के माध्यम से चलता है।
- यदि
- जेआईटी किसी भी एप्लिकेशन के लिए सक्षम है जो
speed
संकलन फ़िल्टर के अनुसार संकलित नहीं है (जो कहता है "ऐप से जितना हो सके संकलित करें")। - JIT प्रोफ़ाइल डेटा को सिस्टम निर्देशिका में एक फ़ाइल में डंप किया जाता है जिसे केवल एप्लिकेशन ही एक्सेस कर सकता है।
- AOT संकलन (
dex2oat
) डेमॉन उस फ़ाइल को उसके संकलन को चलाने के लिए पार्स करता है।चित्रा 3. जेआईटी डेमॉन गतिविधियां।
Google Play सेवा अन्य अनुप्रयोगों द्वारा उपयोग किया जाने वाला एक उदाहरण है जो साझा पुस्तकालयों के समान व्यवहार करता है।
जेआईटी वर्कफ़्लो

- प्रोफाइलिंग जानकारी को कोड कैश में संग्रहीत किया जाता है और मेमोरी दबाव में कचरा संग्रहण के अधीन किया जाता है।
- इस बात की कोई गारंटी नहीं है कि जब एप्लिकेशन पृष्ठभूमि में था तो स्नैपशॉट में पूरा डेटा होगा (यानी, वह सब कुछ जो JITed था)।
- यह सुनिश्चित करने का कोई प्रयास नहीं है कि सब कुछ रिकॉर्ड किया गया है (क्योंकि यह रनटाइम प्रदर्शन को प्रभावित कर सकता है)।
- तरीके तीन अलग-अलग राज्यों में हो सकते हैं:
- व्याख्या (डेक्स कोड)
- जेआईटी संकलित
- एओटी संकलित
- अग्रभूमि ऐप के प्रदर्शन को प्रभावित किए बिना JIT को चलाने के लिए मेमोरी की आवश्यकता संबंधित ऐप पर निर्भर करती है। बड़े ऐप्स को छोटे ऐप्स की तुलना में अधिक मेमोरी की आवश्यकता होती है। सामान्य तौर पर, बड़े ऐप्स लगभग 4 एमबी स्थिर होते हैं।
JIT लॉगिंग चालू करना
JIT लॉगिंग चालू करने के लिए, निम्नलिखित कमांड चलाएँ:
adb root
adb shell stop
adb shell setprop dalvik.vm.extra-opts -verbose:jit
adb shell start
JIT . को अक्षम करना
JIT को अक्षम करने के लिए, निम्न कमांड चलाएँ:
adb root
adb shell stop
adb shell setprop dalvik.vm.usejit false
adb shell start
जबरदस्ती संकलन
संकलन को बाध्य करने के लिए, निम्नलिखित चलाएँ:
adb shell cmd package compile
एक विशिष्ट पैकेज को बलपूर्वक संकलित करने के लिए सामान्य उपयोग के मामले:
- प्रोफाइल-आधारित:
adb shell cmd package compile -m speed-profile -f my-package
4 - पूर्ण:
adb shell cmd package compile -m speed -f my-package
सभी पैकेजों को संकलित करने के लिए सामान्य उपयोग के मामले:
- प्रोफाइल-आधारित:
adb shell cmd package compile -m speed-profile -f -a
- पूर्ण:
adb shell cmd package compile -m speed -f -a
प्रोफ़ाइल डेटा साफ़ करना
प्रोफ़ाइल डेटा साफ़ करने और संकलित कोड निकालने के लिए, निम्नलिखित चलाएँ:
- एक पैकेज के लिए:
adb shell cmd package compile --reset my-package
- सभी पैकेजों के लिए:
adb shell cmd package compile --reset -a