कॉलस्टैक, सीपीयू हॉट स्पॉट या कोड के उन सेक्शन की पहचान करने में मददगार होते हैं जिन्हें एक्ज़ीक्यूट होने में ज़्यादा समय लगता है. कॉलस्टैक से यह समझने में मदद मिलती है कि कोड का कौन-सा हिस्सा एक्ज़ीक्यूट किया गया है और उसे क्यों शुरू किया गया था.
कॉलस्टैक के सैंपल के बारे में खास जानकारी
कॉलस्टैक का सैंपल लेने के लिए, Android Studio Profiler के होम टैब में जाकर, Find CPU Hotspots (Callstack Sample) टास्क को चुनें. रिकॉर्डिंग पार्स होने के बाद, आपको ये विज़ुअल दिखते हैं:
सीपीयू के इस्तेमाल और इंटरैक्शन टाइमलाइन के साथ-साथ, थ्रेड सेक्शन में, आपके ऐप्लिकेशन और सिस्टम की ओर से किए गए हर कॉल के लिए फ़्रेम दिखाए जाते हैं. कॉलस्टैक के सैंपल पर जाने के लिए यहां कुछ सुझाव दिए गए हैं:
- अपनी पसंद के थ्रेड को बड़ा करें और स्टैक फ़्रेम में नेविगेट करने के लिए, कीबोर्ड शॉर्टकट का इस्तेमाल करें. विश्लेषण पैन में इवेंट और उससे जुड़े कॉल की जानकारी पाने के लिए, किसी स्टैक फ़्रेम पर क्लिक करें.
- कुछ तरह के स्टैक फ़्रेम को फ़िल्टर करने के लिए, फ़्रेम छोटा करें पर क्लिक करें. इसके बाद, उन फ़्रेम टाइप पर सही का निशान लगाएं जिन्हें आपको छिपाना है. फ़्रेम को छोटा करने पर, वे थ्रेड और विश्लेषण, दोनों सेक्शन से हट जाते हैं. जांच के आधार पर, आपको Java वर्चुअल मशीन (उदाहरण के लिए,
android::AndroidRuntime::start
औरart::{...}
) और सिस्टम कर्नल (उदाहरण के लिए,[kernel.kallsyms]+{offset}
) से फ़्रेम को छोटा करना पड़ सकता है. आम तौर पर, इसका मतलब[kernel.kallsyms]
,/apex/
, और/system/*
से जुड़े फ़्रेम को छोटा करना होता है.
आम तौर पर, Java/Kotlin प्रोग्राम Java वर्चुअल मशीन के ज़रिए एक्ज़ीक्यूट होता है. इसलिए, जब Android Studio किसी Java/Kotlin प्रोग्राम के लिए कॉलस्टैक इकट्ठा करता है, तो कॉलस्टैक में आम तौर पर सिर्फ़ Java/Kotlin कोड ही नहीं, बल्कि प्रोग्राम को चलाने के लिए ज़रूरी नेटिव कोड भी शामिल होता है. साथ ही, प्रोग्राम को सिस्टम और हार्डवेयर के साथ इंटरैक्ट करने के लिए भी नेटिव कोड की ज़रूरत होती है.
- किसी स्टैक फ़्रेम से जुड़े सोर्स कोड पर जाने के लिए, फ़्रेम पर राइट क्लिक करें. इसके बाद, सोर्स पर जाएं पर क्लिक करें.
- इवेंट टेबल में किसी इवेंट से जुड़े स्टैक फ़्रेम को हाइलाइट करने के लिए, इवेंट पर क्लिक करें.
अन्य विज़ुअल के बारे में जानकारी के लिए, सिस्टम ट्रेस रिकॉर्ड करना और चार्ट की शब्दावली देखें.
कमांड लाइन का इस्तेमाल करके, नेटिव कोड का सैंपल
Android Studio, आपके ऐप्लिकेशन के नेटिव कोड को ट्रेस करने के लिए, अंदरूनी तौर पर simpleperf का इस्तेमाल करता है. अगर आपको Simpleperf के लिए कुछ और विकल्प तय करने हैं, जैसे कि किसी डिवाइस के सीपीयू की सैंपलिंग करना या ज़्यादा सटीक तरीके से सैंपलिंग की अवधि तय करना, तो कमांड लाइन से simpleperf का इस्तेमाल करें.