Google अश्वेत समुदायों के लिए नस्लीय इक्विटी को आगे बढ़ाने के लिए प्रतिबद्ध है। देखो कैसे।
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

एंड्रॉयड रनटाइम (एआरटी) और Dalvik

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

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

कला सुविधाएँ

एआरटी द्वारा कार्यान्वित कुछ प्रमुख विशेषताएं इस प्रकार हैं।

आगे-ऑफ-समय (AOT) संकलन

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

उदाहरण के लिए, 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

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

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

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