Google 致力于为黑人社区推动种族平等。查看具体举措
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

Android रनटाइम (ART) और Dalvik

एंड्रॉइड रनटाइम (ART) प्रबंधित रनटाइम है जिसका उपयोग एंड्रॉइड पर एप्लिकेशन और कुछ सिस्टम सेवाओं द्वारा किया जाता है। ART और इसके पूर्ववर्ती Dalvik मूल रूप से Android प्रोजेक्ट के लिए बनाए गए थे। एआरटी रनटाइम के रूप में दलविक निष्पादन योग्य प्रारूप और डेक्स बाइटकोड विनिर्देश को निष्पादित करता है।

डेक्स बाइटकोड को चलाने वाले एआरटी और डालविक संगत रनटाइम्स हैं, इसलिए एआरटी के साथ चलने पर दलविक के लिए विकसित ऐप काम करना चाहिए। हालाँकि, कुछ तकनीकें जो Dalvik पर काम करती हैं, ART पर काम नहीं करती हैं। सबसे महत्वपूर्ण मुद्दों के बारे में जानकारी के लिए, एंड्रॉइड रनटाइम (एआरटी) पर सत्यापन एप्लिकेशन व्यवहार देखें।

कला सुविधाएँ

यहां कुछ प्रमुख विशेषताएं एआरटी द्वारा लागू की गई हैं।

आगे का समय (एओटी) संकलन

एआरटी आगे-समय (एओटी) संकलन का परिचय देता है, जिससे ऐप प्रदर्शन में सुधार हो सकता है। ART के पास Dalvik की तुलना में टीयर इंस्टॉल-टाइम वेरिफिकेशन भी है।

इंस्टॉल के समय, ART ऑन-डिवाइस dex2oat टूल का उपयोग करके ऐप्स को संकलित करता है। यह उपयोगिता इनपुट के रूप में डीईएक्स फाइलों को स्वीकार करती है और लक्ष्य डिवाइस के लिए एक संकलित एप्लिकेशन का निष्पादन करती है। उपयोगिता को बिना किसी कठिनाई के सभी वैध DEX फ़ाइलों को संकलित करने में सक्षम होना चाहिए। हालाँकि, कुछ पोस्ट-प्रोसेसिंग टूल अमान्य फ़ाइलों का उत्पादन करते हैं, जिन्हें Dalvik द्वारा सहन किया जा सकता है लेकिन ART द्वारा संकलित नहीं किया जा सकता है। अधिक जानकारी के लिए, कचरा संग्रहण मुद्दे को संबोधित करना देखें।

बेहतर कचरा संग्रह

कचरा संग्रह (जीसी) बहुत संसाधन गहन है, जो ऐप के प्रदर्शन को बिगाड़ सकता है, जिसके परिणामस्वरूप तड़का हुआ प्रदर्शन, खराब यूआई प्रतिक्रिया, और अन्य समस्याएं हो सकती हैं। एआरटी कई तरह से कचरा संग्रहण में सुधार करता है:

  • ज्यादातर एकल जीसी ठहराव के साथ समवर्ती डिजाइन
  • पृष्ठभूमि स्मृति के उपयोग और विखंडन को कम करने के लिए समवर्ती नकल
  • जीसी ठहराव की लंबाई ढेर के आकार से स्वतंत्र है
  • हाल ही में आवंटित, अल्पकालिक वस्तुओं की सफाई के विशेष मामले के लिए कम कुल जीसी समय के साथ कलेक्टर
  • बेहतर कचरा संग्रहण एर्गोनॉमिक्स, समवर्ती कचरा संग्रह को और अधिक समय पर बनाना, जो GC_FOR_ALLOC घटनाओं को विशिष्ट उपयोग के मामलों में अत्यंत दुर्लभ बनाता है।

विकास और डिबगिंग सुधार

ऐप विकास और डीबगिंग को बेहतर बनाने के लिए ART कई सुविधाएँ प्रदान करता है।

नमूना प्रोफाइलर के लिए समर्थन

ऐतिहासिक रूप से, डेवलपर्स ने एक प्रॉसेसर के रूप में ट्रेसव्यू टूल (एप्लिकेशन निष्पादन के लिए डिज़ाइन किया गया) का उपयोग किया है। जबकि ट्रेसव्यू उपयोगी जानकारी देता है, Dalvik पर इसके परिणामों को प्रति-विधि-कॉल ओवरहेड द्वारा तिरछा किया गया है, और टूल का उपयोग रन टाइम प्रदर्शन को प्रभावित करता है।

एआरटी एक समर्पित नमूना प्रोफाइलर के लिए समर्थन जोड़ता है जिसमें ये सीमाएं नहीं हैं। यह महत्वपूर्ण मंदी के बिना एप्लिकेशन निष्पादन का अधिक सटीक दृश्य देता है। किटकैट रिलीज़ में दलविक के लिए सैंपलिंग सपोर्ट को ट्रेसेव में जोड़ा गया था।

अधिक डीबगिंग सुविधाओं के लिए समर्थन

एआरटी कई नए डिबगिंग विकल्पों का समर्थन करता है, विशेष रूप से मॉनिटर और कचरा संग्रह से संबंधित कार्यक्षमता में। उदाहरण के लिए, आप कर सकते हैं:

  • देखें कि स्टैक के निशान में कौन से ताले लगे हुए हैं, फिर उस धागे पर जाएं जो एक लॉक रखता है।
  • पूछें कि कितने जीवित उदाहरण दिए गए वर्ग के हैं, उदाहरणों को देखने के लिए कहें, और देखें कि क्या संदर्भ किसी वस्तु को लाइव रख रहे हैं।
  • एक विशिष्ट उदाहरण के लिए फ़िल्टर ईवेंट (जैसे ब्रेकपॉइंट)।
  • जब यह बाहर निकलता है ("विधि-निकास" घटनाओं का उपयोग करके) एक विधि द्वारा लौटाया गया मूल्य देखें।
  • किसी विशिष्ट फ़ील्ड के एक्सेस और / या संशोधित होने पर प्रोग्राम के निष्पादन को स्थगित करने के लिए फ़ील्ड घड़ी सेट करें।

अपवाद और क्रैश रिपोर्ट में बेहतर नैदानिक ​​विवरण

एआरटी आपको रनटाइम अपवाद होने पर यथासंभव संदर्भ और विवरण देता है। ART java.lang.ClassCastException , java.lang.ClassNotFoundException और java.lang.NullPointerException लिए विस्तृत विवरण प्रदान करता है। (बाद में Dalvik के संस्करणों ने java.lang.ArrayIndexOutOfBoundsException और java.lang.ArrayStoreException लिए विस्तृत अपवाद प्रदान किया, जिसमें अब सरणी का आकार और आउट-ऑफ-बाउंड्स ऑफ़सेट शामिल हैं, और ART यह भी करता है।)

उदाहरण के लिए, java.lang.NullPointerException अब इस बारे में जानकारी दिखाती है कि ऐप नल पॉइंटर के साथ क्या करने की कोशिश कर रहा था, जैसे कि जिस क्षेत्र में ऐप लिखने के लिए कोशिश कर रहा था, या जिस विधि से यह कॉल करने की कोशिश कर रहा था। यहाँ कुछ विशिष्ट उदाहरण हैं:

java.lang.NullPointerException: Attempt to write to field 'int
android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object
reference
java.lang.NullPointerException: Attempt to invoke virtual method
'java.lang.String java.lang.Object.toString()' on a null object reference

एआरटी भी जावा और देशी स्टैक जानकारी दोनों को शामिल करके ऐप मूल क्रैश रिपोर्ट में बेहतर संदर्भ जानकारी प्रदान करता है।

रिपोर्टिंग की समस्याएं

यदि आप किसी ऐसे मुद्दे पर चलते हैं जो JNI समस्याओं के कारण नहीं हैं, तो कृपया उन्हें Android ओपन सोर्स प्रोजेक्ट इश्यू ट्रैकर के माध्यम से रिपोर्ट करें। यदि उपलब्ध हो तो Google Play स्टोर में एक adb bugreport और ऐप को लिंक करें। अन्यथा, यदि संभव हो, तो एक एपीके संलग्न करें जो समस्या को पुन: पेश करता है।