मैं अपने आईओएस गेम का परीक्षण कर रहा था और यह कितना मेमोरी ले रहा था और सोचा के बीच एक विसंगति देखी गई है। आखिरकार मैंने 33% अधिक मेमोरी लेने वाले बनावट में समस्या को कम कर दिया, जैसा कि मैंने सोचा था कि उन्हें लेना चाहिए।आईओएस बनावट 33% अतिरिक्त मेमोरी
उदाहरण के लिए, मुझे लगता है कि 256x256 असंपीड़ित 32-बिट बनावट 256 * 256 * 4 बाइट्स = 256k लेनी चाहिए। हालांकि, मुझे लगता है कि 256x256 बनावट आवंटित करते समय 340k की तरह कुछ ऐप की स्मृति बढ़ जाती है। ऐसा लगता है कि डिवाइस बनावट और उसके सभी मिपमैप्स को स्टोर करने के लिए पर्याप्त मेमोरी आवंटित कर रहा था, लेकिन मैं मिप मानचित्र का उपयोग नहीं कर रहा हूं या किसी भी तरह से अंतरिक्ष मांग रहा हूं।
यह अतिरिक्त मेमोरी खड़ी हो गई, क्योंकि यह केवल कुछ उपकरणों पर ही होगी।
: जब एक आइपॉड टच 4. पर खेल का परीक्षण हालांकि, समस्या एक iPhone 3GS, आइपॉड 3 जी, या iPad 1.उपकरणों पर ओएस संस्करणों रहे हैं नहीं होती मैं अतिरिक्त स्मृति देखा
आइपॉड 3 जी - आईओएस 3.1.2 (7D11) iPhone 3GS - आईओएस 4.3.5 (8L1) आइपॉड 4 - आईओएस 4.2.1 (8C148) आईपैड - iOS 4.3 (8F190)
संपादित
यहां थोड़ी अधिक जानकारी है। मैं मापने के इस
int PlatformIOS::GetProcessMemUsage()
{
task_basic_info info;
mach_msg_type_number_t size = sizeof(info);
kern_return_t kerr = task_info(mach_task_self(), TASK_BASIC_INFO, (task_info_t)&info, &size);
if (kerr == KERN_SUCCESS)
return info.resident_size;
return 0;
}
तरह एप्लिकेशन की स्मृति यह एक ही मूल्य है कि आप रियल मेम के लिए insturments कार्यक्रम में देखेंगे देता है। यह वास्तव में बहुत उपयोगी है।
bool GL3DTextureDataPiece::CreateTextureSurface(X3DInterfaceImpl *theInterface, int theWidth, int theHeight, PixelFormat theFormat, RefCount *thePalette, bool generateMipMap)
{
glGenTextures(1,&mTexture);
theInterface->SetCurTexture(this);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,mLinearFilter?GL_LINEAR:GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,mLinearFilter?GL_LINEAR:GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, theWidth, theHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
return true;
}
यह सब बहुत ही बुनियादी सामान है:
और यहाँ कैसे मैं अपने बनावट का आवंटन है। एकमात्र चीज जिसने मुझे पहली जगह में स्मृति समस्याओं को ढूंढने का नेतृत्व किया, विभिन्न उपकरणों के बीच विसंगति थी। वास्तव में, यह कुल ऐप मेमोरी और संसाधन मेमोरी (मैं छवियों और ध्वनि स्मृति को ट्रैक करता हूं) के बीच विसंगति थी जिसने मुझे इस बग को खोजने के लिए जांच की।
प्रदर्शित नहीं करता है कि कोड को प्रभावित करता है, लेकिन मुझे आश्चर्य है कि रेटिना डिस्प्ले के साथ इसका कोई संबंध नहीं है? – summea
आप ऐप्स मेमोरी को कैसे माप रहे हैं? – Justicle