दिलचस्प पोस्ट
अजगर: सूची संकेतों में लैम्ब्डा फ़ंक्शन कार्यात्मक प्रोग्रामिंग: "अनुचित सूची" क्या है? एक बहुत लंबे स्ट्रिंग wordwrap सीतनिद्रा में होना और कोई पी.के. क्या एसक्यूएल कथन सेरगेट करता है? एंड्रॉइड – लॉन्चर आइकन आकार C ++ स्ट्रिंग कन्वर्ट हेक्साडेसिमल और इसके विपरीत printf विसंगति के बाद "कांटा ()" सीएसएस का उपयोग करके पाठ की लंबाई को एन लाइन पर सीमित करें Onclick घटना नहीं jsfiddle.net पर फायरिंग PHP के HTML DOMDocument के साथ HTML को पार्स करें java.lang.NoClassDefFound त्रुटि: javax.activation.DataHandler एंड्रॉइड वर्तमान अभ्यासों को रेल करता है सी ++ में "ऑब्जेक्ट वापस" कैसे करें? मेरी जावास्क्रिप्ट को "नो" एक्सेस-कंट्रोल-अनुमति-मूल-शीर्षक क्यों मिलता है? अनुरोधित संसाधन पर मौजूद है "त्रुटि जब डाकिया नहीं करता है?

ऐप का अधिकतम उपयोग कितना होता है?

मैं एंड्रॉइड ऑपरेटिंग सिस्टम के स्मृति प्रबंधन से संबंधित इस प्रश्न के बारे में बहुत उत्सुक हूं इसलिए मुझे उम्मीद है कि उस विषय पर काफी विस्तृत उत्तर के लिए होगा।

मैं क्या जानना चाहूंगा:

  • स्मृति की अधिकतम राशि ( मेगाबाइट में / कुल रैम के प्रतिशत के रूप में) क्या एक एंड्रॉइड एप्लिकेशन (जो कि सिस्टम ऐप नहीं है) का उपयोग कर सकते हैं?
  • क्या Android संस्करणों के बीच कोई अंतर है?
  • क्या डिवाइस के निर्माता से संबंधित कोई मतभेद हैं?

और सबसे महत्वपूर्ण रूप से:

  • कौन सी "पक्ष कारक" को ध्यान में रखा जाता है / यह सिस्टम पर आने पर निर्भर करता है कि यह निर्धारित करता है कि कितनी रैम एक ऐप रनटाइम पर इस्तेमाल कर सकता है (यह सोचते हुए कि प्रति मेमरी अधिकतम प्रति एक स्थैतिक संख्या नहीं है)?

जो मैंने अब तक सुना है (2013 तक):

  • प्रारंभिक एंड्रॉइड डिवाइस में 16 एमबी की एक प्रति-ऐप थी
  • बाद में इस टोपी को 24 एमबी या 32 एमबी तक बढ़ा दिया गया

क्या मुझे बहुत उत्सुक बनाता है:

इन दोनों सीमाएं बहुत कम हैं

मैंने हाल ही में अपने डिवाइस रैम की जांच करने के लिए एंड्रॉइड टास्क मैनेजर डाउनलोड किया है । मैंने जो गौर किया है वह है कि लगभग 40-50 मेगाबाइट के राम का उपयोग करने वाले एप्लिकेशन हैं, जो कि अधिकतम 32 एमबी रैम उपयोग की तुलना में अधिक है। तो एंड्रॉइड कैसे तय करता है कि ऐप कितनी रैम का इस्तेमाल कर सकता है? यह कैसे संभव है कि ऐप्स उस सीमा से अधिक हो?

इसके अलावा, मैंने देखा कि मेरे क्रैश के कुछ ऐप्स (सिस्टम द्वारा मारे गए?) एक आउटऑफममेरी एक्सपैशन के साथ जब 30-40 मेगाबाइट्स का उपयोग करते हैं दूसरी ओर, मेरे पास कुछ समय (शायद मेमोरी लीक के कारण) के बाद 100 एमबी और अधिक का उपयोग करते हुए मेरे फोन पर क्षुधा चल रहा है जो कि दुर्घटनाग्रस्त नहीं है या मारे गए नहीं हैं। तो यह स्पष्ट रूप से एप पर ही निर्भर करता है कि यह तय करने के लिए आता है कि कितना रैम बचाया जा सकता है। यह कैसे संभव है? (मैंने 768 एमबी रैम के साथ एचटीसी वन एस के साथ अपने परीक्षण किए)

आपके स्पष्टीकरण के लिए अग्रिम धन्यवाद

अस्वीकरण: मैं एंड्रॉइड टास्क प्रबंधक ऐप से किसी भी तरह से संबद्ध नहीं हूं।

वेब के समाधान से एकत्रित समाधान "ऐप का अधिकतम उपयोग कितना होता है?"

स्मृति की अधिकतम राशि (मेगाबाइट में / कुल रैम के प्रतिशत के रूप में) क्या एक एंड्रॉइड एप्लिकेशन (जो कि सिस्टम ऐप नहीं है) का उपयोग कर सकते हैं?

यह उपकरण के अनुसार भिन्न होता है ActivityManager पर getMemoryClass() आपको अपने कोड पर चल रहे डिवाइस के लिए मूल्य दे देंगे

क्या Android संस्करणों के बीच कोई अंतर है?

हां, जैसा कि ओएस आवश्यकताओं के वर्षों में वृद्धि हुई है, और उपकरणों को मैच के लिए समायोजित करना होगा।

क्या डिवाइस के निर्माता से संबंधित मतभेद हैं?

हां, निर्माताओं के विनिर्माण उपकरणों के रूप में, और आकार डिवाइस के अनुसार भिन्न होता है।

कौन सा "पक्ष कारक" को ध्यान में रखा जाता है जब यह निर्धारित करता है कि ऐप कितनी रैम का उपयोग कर सकता है?

मुझे नहीं पता है कि "पक्ष कारक" का अर्थ क्या है

प्रारंभिक उपकरणों में 16 एमबी की एक प्रति-ऐप थी; बाद में उपकरणों ने 24 एमबी या 32 एमबी तक बढ़ा दिया

यह सही है स्क्रीन रिज़ॉल्यूशन एक महत्वपूर्ण निर्धारक है, क्योंकि बड़े प्रस्तावों का मतलब बड़ा बिटमैप है, और इसलिए टैबलेट और उच्च-रिज़ॉल्यूशन वाले फोनों में अभी तक उच्च मूल्यों की संभावना है। उदाहरण के लिए, आप 48 एमबी के ढेर वाले उपकरणों को देखेंगे, और मुझे आश्चर्य नहीं होगा कि उस मूल्य से अधिक मूल्य क्या हैं I

यह कैसे संभव है कि ऐप्स उस सीमा से अधिक हो?

आप मानते हैं कि उस ऐप का लेखक जानता है कि वह क्या कर रहा है। एक एंड्रॉइड इंजिनियर के लिए एक एप के मेमोरी उपयोग को समझना मुश्किल है , मैं यह नहीं मानूंगा कि प्रश्न में ऐप आवश्यक रूप से सटीक परिणाम प्रदान कर रहा है

कहा जा रहा है कि, देशी कोड (एनडीके) हीप की सीमा के अधीन नहीं है। और, एंड्रॉइड 3.0 के बाद से, ऐप "बड़े ढेर" का अनुरोध कर सकते हैं, आमतौर पर एमबी रेंज के सैकड़ों में, लेकिन यह अधिकांश ऐप्स के लिए खराब फ़ॉर्म माना जाता है।

इसके अलावा, मैंने देखा कि मेरे आउटपुट के कुछ क्षुधा आउटऑफममेरी अपॉसिशन के साथ 30-40 मेगाबाइट के आसपास का उपयोग करते हुए।

ध्यान रखें कि एंड्रॉइड कूड़ा कलेक्टर कॉम्पैक्टिंग कूड़ा कलेक्टर नहीं है। अपवाद सचमुच होना चाहिए CouldNotFindSufficientlyLargeBlockOfMemoryException , लेकिन यह शायद बहुत शब्दशः माना गया था। OutOfMemoryException मतलब है कि आप अपने अनुरोधित ब्लॉक आवंटित नहीं कर सके , नहीं कि आपने पूरी तरह से अपने ढेर को समाप्त किया है

प्रति एप्लिकेशन स्मृति सीमा स्क्रीन आकार और एंड्रॉइड वर्जन पर निर्भर करता है: https://drive.google.com/file/d/0B7Vx1OvzrLa3Y0R0X1BZbUpicGc/view?usp=sharing

स्रोत: एंड्रॉइड संगतता डाउनलोड http://source.android.com/compatibility/downloads.html ; संगतता परिभाषा दस्तावेज़ (सीडीडी), अनुभाग वर्चुअल मशीन संगतता या रनटाइम संगतता

यह उत्तर getMemoryClass() और maxMemory() तरीकों के व्यवहार में गहरा होता है