سؤال

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

هل كانت مفيدة؟

المحلول

عندما تقوم بتصحيح تطبيقك ، افتح DDMS في الكسوف. يوجد على شريط الأدوات زر تفريغ الكومة يمكنك استخدامه لإنشاء تفريغ كومة لعرضه في محلل ذاكرة Eclipse. هذا مدعوم فقط أعتقد مع 1.6+ أو 2.0+ SDK.

نصائح أخرى

يجب تحويل تفريغ الكومة من Dalvik VM إلى تنسيق HPROF العادي باستخدام أداة محول HPROF-CONV.exe في دليل الأدوات الخاص بـ Android SDK. يمكنك فتح هذا HPROF مع حصيرة Eclipse أو غيرها من الأدوات: YouRkit http://www.yourkit.com/و Jprobe http://www.quest.com/jprobe/

بجانب DDMS ، يمكنك أيضًا إنشاء HPROF من تطبيق/رمز (SDKs الأحدث فقط) عبر Debug.dumpHprofData(...)

لاحظ أنه في DDMS ، يمكنك رؤية الكومة التي يستخدمها تطبيقك. لا يُظهر الكومة الأصلية أن الموارد الخارجية مثل نقار نقطات تخصيص. ومع ذلك ، يجب أيضًا أخذ هذه الموارد في الاعتبار عند التحقق من تسرب الذاكرة. عندما يضيف كل من مواطنه وتطبيق APP ما يصل إلى 16 ميجابايت / resp. 24 ميغابايت ستحصل على خطأ OOM.

يمكنك رؤية الكومة الأصلية التي تم استخدامها (أي بواسطة Bitmaps في تطبيقك) عبر Debug.getNativHeapAllocatedSize().

انظر أيضا http://developer.android.com/guide/developing/debugging/ddms.html#profiling

إذا كان ذلك مفيدًا ، فيمكنك تمكين التنميط على المناطق المحلية من الكود باستخدام API Debug. وبهذه الطريقة ، لديك أقل فعلًا عند تحليل الآثار على سبيل المثال TraceView. نرى http://macgyverdev.blogspot.com/2011/07/profiling-droid-application-tutorial.html للحصول على أمثلة.

وبعض المعلومات التفصيلية حول كيفية تحويل مقالب DDMS لكومة حتى تتمكن من عرضها في محلل ذاكرة Eclipse والعثور على كائنات التسرب عبر أدوات شجرة Dominator: http://macgyverdev.blogspot.com/2011/11/Android-track-memory-leaks.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top