इंस्ट्रूमेंट्स ऑब्जेक्टऑलोक: लाइव बाइट्स और समग्र बाइट्स का स्पष्टीकरण


86

मैं यह समझने के प्रयास में Instument के ObjectAlloc टूल का उपयोग कर रहा हूं कि मेरा एप्लिकेशन (iPhone) मेमोरी क्या कर रहा है और यह कब और कहां कर रहा है।

मैं वास्तव में इन आँकड़ों की एक बुनियादी व्याख्या करना चाहूँगा:

  • लाइव बाइट्स
  • #जीवित
  • #Transitory
  • कुल मिलाकर बाइट्स

जब मैं यह जानने की कोशिश कर रहा हूं कि मेरा एप्लिकेशन कितनी मेमोरी का उपयोग कर रहा है, तो क्या मैं लाइव बाइट्स या ओवरऑल बाइट्स देख सकता हूं? क्या इसमें लीक्ड मेमोरी शामिल है? क्षणभंगुर वस्तुएं क्या हैं?

धन्यवाद


6
जब आप उनके शीर्षकों पर होवर करते हैं, तो स्तंभों का संक्षिप्त वर्णन होता है।
पियोट्र बाइज़िया

जवाबों:


110

ObjectAlloc आपके प्रोग्राम के चलने के समय के दौरान सभी मेमोरी आवंटन और टैक्लोलेशन को ट्रैक करता है।

Living bytes, or Net bytesहै कितना स्मृति अपने आवेदन बार जब आप समय रेखा में चयन पर इस्तेमाल कर रहा है। इसमें लीक की गई मेमोरी शामिल होगी, क्योंकि लीक हुई मेमोरी को कभी नहीं हटाया जाता है।

#Livingएक निश्चित आकार / वस्तु प्रकार के कितने आवंटन हुए (और अभी भी आवंटित हैं)। लीक की तलाश में यह बहुत उपयोगी है।

उदाहरण के लिए, यदि आप दोहराव से एक क्रिया करते हैं (जैसे कि मोडल व्यू कंट्रोलर से बाहर आना), और आप देखते हैं कि #Livingहर बार एक ही राशि से एक वस्तु बढ़ती है, तो आप शायद उन वस्तुओं को लीक कर रहे हैं। फिर आप नीचे ड्रिलिंग करके और ऑब्जेक्ट्स को आवंटित करने वाले कोड की सटीक लाइन देखकर पुष्टि कर सकते हैं, और यह भी देख सकते हैं कि हर एक का समय इंडेक्स बनाया गया था।

Overall bytesजिसमें जारी की गई मेमोरी शामिल है। यह प्रदर्शन अनुकूलन उद्देश्यों के लिए उस संख्या को ट्रैक करने के लिए उपयोगी है, लेकिन यदि आप अभी अपने वर्तमान स्मृति पदचिह्न को देखने या लीक की तलाश में हैं।


3
आप ओवरऑल बाइट्स के संदर्भ में क्या अनुकूलन करने की कोशिश कर रहे हैं? नंबर छोटे रखने का प्रयास है बेहतर प्रदर्शन?
दान रोसेनस्टार्क

4
हाँ सही। प्रदर्शन समस्याओं का एक सामान्य कारण गलती से एक ही कोड को एक से अधिक बार चलाना है। एलोकेशन टूल नोटिस करने का एक अच्छा तरीका हो सकता है। उदाहरण के लिए, भले ही अतिरिक्त वस्तुएँ लीक नहीं हो रही हों, आप कह सकते हैं, "मैंने उस वस्तु के 3 क्यों बनाए? वहाँ केवल एक ही होना चाहिए था!"
केन एस्पेसलघ

2
लाइव बाइट्स आपके ऐप का वर्तमान में कितनी मेमोरी है। ओवरऑल आपके ऐप द्वारा किए गए सभी आवंटन का कुल योग है (स्मृति से जो मुक्त हो गया है।)
केन एस्पेसलैग

1
@KenAspeslagh मैं कुल बाइट्स की परवाह क्यों करूंगा, अगर इसमें जारी की गई वस्तुएं भी हैं?
देजेल

3
यदि आप प्रदर्शन के लिए ट्यूनिंग कर रहे हैं, तो आप अपने ऐप द्वारा किए गए आवंटन की संख्या को कम से कम करना चाहते हैं, क्योंकि यह चलता है (भले ही आपने कहा आवंटन लीक नहीं कर रहे हैं।) अत्यधिक आवंटन अक्सर एक संकेतक हो सकता है कि आप इसे गलत कर रहे हैं।
केन एस्पेसलघ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.