OSMemoryNotification.h से
,
/*
** Threshold values for notifications
*/
typedef enum {
OSMemoryNotificationLevelAny = -1,
OSMemoryNotificationLevelNormal = 0,
OSMemoryNotificationLevelWarning = 1,
OSMemoryNotificationLevelUrgent = 2,
OSMemoryNotificationLevelCritical = 3
} OSMemoryNotificationLevel;
totoal स्मृति चेतावनी (-1,3) के 5 स्तरों।
मेमोरी लेवल चेतावनी विवरण के संबंध में, @ केनीटीएम का जवाब उत्कृष्ट है।
मैं कई संबंधित अंक जोड़ना चाहता हूं जो पीएम और अन्य की मदद कर सकते हैं।
मेमोरी लेवल चेतावनी होने पर आपको क्या करना चाहिए?
इनमें से किसी भी चेतावनियों को प्राप्त करने पर, आपके हैंडलर विधि को किसी भी अनियंत्रित स्मृति को तुरंत मुक्त करके जवाब देना चाहिए। उदाहरण के लिए, UIViewController क्लास का डिफ़ॉल्ट व्यवहार अपने दृश्य को शुद्ध करना है यदि वह दृश्य वर्तमान में दिखाई नहीं दे रहा है; उप-वर्ग अतिरिक्त डेटा संरचनाओं को शुद्ध करके डिफ़ॉल्ट व्यवहार को पूरक बना सकते हैं।एक ऐप जो छवियों के कैश को बनाए रखता है, वह किसी भी छवि को जारी करके प्रतिक्रिया दे सकता है जो वर्तमान में स्क्रीन पर नहीं है।
मेमोरी लेवल चेतावनी का निरीक्षण कैसे करें?
http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/PerformanceTuning/PerformanceTuning.html
से
प्रणाली एक कम स्मृति को अपने ऐप्लिकेशन पर चेतावनी डिस्पैच करते हैं, तो तुरंत जवाब देते हैं। आईओएस सभी चल रहे ऐप्स को सूचित करता है जब भी एक सुरक्षित थ्रेसहोल्ड के नीचे मुफ्त मेमोरी डिप की मात्रा होती है। (यह निलंबित ऐप्स को सूचित नहीं करता है।) यदि आपका ऐप इस चेतावनी को प्राप्त करता है, तो इसे जितना संभव हो उतना स्मृति मुक्त करना होगा। ऐसा करने का सबसे अच्छा तरीका है कैश, छवि ऑब्जेक्ट्स और अन्य डेटा ऑब्जेक्ट्स के मजबूत संदर्भों को हटाने के लिए जिन्हें बाद में बनाया जा सकता है।
आपके ऐप के मेमोरी उत्सर्जन कम करने?
विवरण?
- autoreleased वस्तुओं के आपके उपयोग कम करें: स्वत: संदर्भ गिनती (एआरसी), यह alloc/init वस्तुओं के लिए बेहतर है और संकलक उचित समय पर आप के लिए उन्हें रिलीज करते हैं। यह अस्थायी वस्तुओं के लिए भी सच है कि अतीत में आपके पास वर्तमान विधि के दायरे से पहले रहने से रोकने के लिए स्वत: समाप्त हो सकता है।
- संसाधनों पर आकार सीमा लागू करें: एक बड़ी संसाधन फ़ाइल लोड करने से बचें जब कोई छोटा करेगा। उच्च-रिज़ॉल्यूशन छवि का उपयोग करने के बजाय, आईओएस-आधारित उपकरणों के लिए उपयुक्त आकार का उपयोग करें। यदि आप को बड़ी संसाधन फ़ाइलों का उपयोग करना चाहिए, तो किसी भी समय आपको जिस फ़ाइल की आवश्यकता है, उसे केवल के हिस्से को लोड करने के तरीके खोजें।उदाहरण के लिए, की बजाय पूरी फ़ाइल को मेमोरी में लोड करें, मेमोरी और मनमैप फ़ंक्शंस का उपयोग फ़ाइल के हिस्सों को मेमोरी में और बाहर मैप करने के लिए करें। स्मृति में फ़ाइलों को मैप करने के बारे में अधिक जानकारी के लिए जानकारी।
- असंबद्ध समस्या सेट से बचें: असंबद्ध समस्या सेटों को की गणना करने के लिए मनमाने ढंग से बड़ी मात्रा में डेटा की आवश्यकता हो सकती है। यदि सेट को उपलब्ध होने से अधिक मेमोरी की आवश्यकता है, तो आपका ऐप गणनाओं को पूरा करने में असमर्थ हो सकता है। जब भी संभव हो तो आपके ऐप्स को ऐसे सेट से बचना चाहिए और ज्ञात स्मृति सीमाओं वाली समस्याओं पर काम करना चाहिए।
स्रोत
2013-04-29 05:32:53
एलओएल "यदि आप कुछ स्मृति मुक्त कर सकते हैं तो आप सक्रिय रूप से इसका उपयोग नहीं कर रहे हैं!" अनमोल ;-) चीयर्स – dugla
आप आईफोन ओएस वैक-ए-मोल मेमोरी डांस के एक अनुभवी अनुभवी की तरह लगते हैं। – dugla
Rye_ में _ कैचर से लिया गया? 'महान कोड;)' – wagashi