Android रनटाइम और Delvik

Android रनटाइम (ART), ऐप्लिकेशन और कुछ सिस्टम के ज़रिए इस्तेमाल किया जाने वाला मैनेज किया गया रनटाइम है सेवाओं में कर रहे हैं. दरअसल, ART और इससे पहले वाली कंपनी डाल्विक मिलकर बनी थी खास तौर पर, Android प्रोजेक्ट के लिए. ART, क्योंकि रनटाइम, Delvik को एक्ज़ीक्यूट करता है एक्ज़ीक्यूटेबल (DEX) फ़ॉर्मैट और DEX बाइटकोड स्पेसिफ़िकेशन के हिसाब से बनाया गया है.

ART और Delvik ऐसे रनटाइम हैं जो DEX बाइट कोड पर चलते हैं. इसलिए, ऐप्लिकेशन ARTविक के लिए डेवलप किया गया, ART के साथ चलाते समय काम करना चाहिए. हालांकि, कुछ जो तकनीक Delvik पर काम करती हैं वे ART पर काम नहीं करती हैं. इस बारे में जानकारी पाने के लिए सबसे महत्वपूर्ण समस्याओं में से किसी एक को प्राप्त करने के लिए, Android रनटाइम (ART) पर ऐप्लिकेशन का व्यवहार.

ART सुविधाएं

ART की कुछ बड़ी सुविधाओं के बारे में यहां बताया गया है.

अहेड-ऑफ़-टाइम (एओटी) कंपाइलेशन

ART में, ‘समय से पहले (AOT)’ काम करने की सुविधा उपलब्ध कराई गई है. इससे ऐप्लिकेशन को बेहतर बनाया जा सकता है परफ़ॉर्मेंस. ART में की जाने वाली इंस्टॉल-टाइम पुष्टि, Delvik से ज़्यादा बेहतर तरीके से होती है.

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

कचरा इकट्ठा करने का बेहतर तरीका

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

  • सिंगल जीसी पॉज़ के साथ ज़्यादातर एक साथ डिज़ाइन
  • बैकग्राउंड मेमोरी के इस्तेमाल और फ़्रैगमेंटेशन को कम करने के लिए, एक साथ डेटा कॉपी करना
  • जीसी पॉज़ की अवधि, हीप के साइज़ पर निर्भर नहीं करती है
  • साफ़-सफ़ाई के खास मामले में, कम जीसी समय वाला कलेक्टर हाल ही में असाइन की गई, कम समय के लिए रहने वाली चीज़ें
  • कचरा इकट्ठा करने के लिए बेहतर एर्गोनॉमिक्स, जो एक साथ कई कचरा पैदा करता है ज़्यादा सटीक समय पर कलेक्शन का इस्तेमाल किया जा सकता है, जिससे GC_FOR_ALLOC सामान्य उपयोग के मामलों में बेहद कम इवेंट होते हैं

डेवलपमेंट और डीबग करने से जुड़े सुधार

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

सैंपलिंग प्रोफ़ाइलर के लिए सहायता

अब तक, डेवलपर Traceview का इस्तेमाल करते थे टूल (जिसे ट्रेस करने के लिए डिज़ाइन किया गया है ऐप्लिकेशन एक्ज़िक्यूशन) दिखता है. Traceview काम की जानकारी देता है, लेकिन हर कॉल पर अन्य तरीकों से होने वाले खर्च की वजह से, Delvik पर उसके नतीजों पर असर पड़ रहा है और के बारे में ज़्यादा जानकारी मिलेगी.

ART, खास तौर पर सैंपलिंग प्रोफ़ाइलर के लिए सहायता जोड़ता है, जिसमें ये नहीं होते सीमित कर दिया है. यह बिना किसी गड़बड़ी के, ऐप्लिकेशन के काम करने के तरीके की ज़्यादा सटीक जानकारी देता है काफ़ी धीमा हो जाएगा. इसके लिए Traceview में सैंपलिंग सहायता जोड़ी गई KitKat रिलीज़ में डाल्विक.

डीबग करने की ज़्यादा सुविधाओं के लिए सहायता

ART कई नए डीबगिंग विकल्पों का समर्थन करता है, विशेष रूप से मॉनिटर- और कचरा इकट्ठा करने से जुड़ी सुविधाएं. उदाहरण के लिए:

  • देखें कि स्टैक ट्रेस में कौनसे लॉक हैं. इसके बाद, सीधे उस थ्रेड पर जाएं फ़ोन को लॉक करके रखता है.
  • यह पूछें कि किसी क्लास में कितने लाइव इंस्टेंस हैं. इसके बाद, यह सवाल पूछें देखें और देखें कि कौन-से संदर्भ किसी ऑब्जेक्ट को लाइव बनाए रखते हैं.
  • किसी खास इंस्टेंस के लिए, इवेंट फ़िल्टर करें, जैसे कि ब्रेकपॉइंट.
  • “मेथड-एग्ज़िट” का इस्तेमाल करके, किसी तरीके से बाहर निकलने पर मिलने वाली वैल्यू देखें इवेंट).
  • किसी प्रोग्राम को चलने से रोकने के लिए, वॉचपॉइंट सेट करें फ़ील्ड को ऐक्सेस और/या उसमें बदलाव किया जाता है.

अपवादों और क्रैश रिपोर्ट में, गड़बड़ी की परफ़ॉर्मेंस से जुड़ी बेहतर जानकारी

रनटाइम अपवादों पर, एआरटी से आपको ज़्यादा से ज़्यादा संदर्भ और जानकारी मिलती है होता है. 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

ART, ऐप्लिकेशन की नेटिव क्रैश रिपोर्ट में कॉन्टेक्स्ट की बेहतर जानकारी भी उपलब्ध कराता है. इसमें Java और नेटिव स्टैक, दोनों की जानकारी शामिल होती है.

समस्याओं की शिकायत करना

अगर आपको कोई ऐसी समस्या आती है जो ऐप्लिकेशन जेएनआई की समस्याओं की वजह से नहीं है, तो रिपोर्ट करें Android ओपन सोर्स की मदद से प्रोजेक्ट से जुड़ी समस्या को ट्रैक करने वाला टूल. एक adb bugreport और इसका लिंक शामिल करें ऐप्लिकेशन उपलब्ध होने पर, उसे Google Play Store में भी देख सकते हैं. अगर हो सके, तो किसी दस्तावेज़ में वह APK जो समस्या के बारे में फिर से बताता है.