[iphone] الأدوات مع نظام iOS: لماذا يختلف مرقاب الذاكرة عن التخصيصات؟



1 Answers

وأعتقد أن هذا يرجع إلى حقيقة أن استخدام الذاكرة من برنامج OpenGL ES مخفي عن ObjectAlloc ، ولكن يتم احتسابه في "مراقب الذاكرة". على سبيل المثال ، راجع اختبارات zoul في سؤاله here ، حيث يلاحظ زيادة طفيفة في ObjectAlloc على إنشاء نسيج ، لكن هذه الذاكرة تختفي من ذلك الجهاز عند تمريرها إلى OpenGL ES. مراقب الذاكرة لا يزال يتعقب هذه الذاكرة الملمس.

يجب أن يشمل ذلك الجانب المرئي لعناصر واجهة المستخدم ، مثل الطبقات وطرق العرض ، لأن CALayers يغلف بشكل فعال في زخارف OpenGL ES. لا يظهر تمثيل الصورة الثنائية ثنائية الأبعاد لعناصر واجهة المستخدم الخاصة بك متتبعًا بواسطة ObjectAlloc ، مما يؤدي إلى انخفاض القيم الإجمالية في ObjectAlloc.

لا يزال ObjectAlloc جيدًا لتتبع أرقام وأنواع عمليات التخصيص ، وهو أكثر قيمة منذ ظهور وظيفة heapshot. أنت فقط ترغب في شريكته مع مراقب الذاكرة للنظر إلى استخدام الذاكرة الإجمالي الحقيقي.

Question

كما شوهدت في هذه الشاشة من أدوات ، فإن التخصيصات تعتقد أن تطبيقي (Ongo) يستخدم فقط 7.55 ميغابايت من الذاكرة ، بينما Memory Monitor يقول 53.30. علاوة على ذلك ، فإن ذاكرة النظام المجانية لديها القليل أو لا علاقة لها بحجم الذاكرة التي يستخدمها التطبيق. هل يعرف أحد لماذا يوجد مثل هذا الخلاف الكبير بين هاتين الأداتين؟ بالإضافة إلى ذلك ، هل من الممكن العثور على مصدر ذاكرة النظام منخفضة أو كيفية منعها من النفاد بهذه السرعة؟ لا يبدو أن تطبيقي يتسرب للذاكرة ولكنه بطريقة ما يستنزف موارد النظام.

شكر




يتم حماية أي رمز مغلف ضمن أقواس استدعاء إرسال إلى GCD من أمرين: الإعلام عن الخطأ ، وأحيانًا ، حساب التخصيص. لا ينطبق ذلك عادة إلا على CoreFoundation أو أي شيء آخر غير UIKit أو non-NSFoundation.




Related