Android ==> تحليل الذاكرة ==> محلل الذاكرة Eclipse؟
-
29-09-2019 - |
سؤال
أحتاج إلى التحقق من طلبي للحصول على تسرب الذاكرة ، أحتاج أيضًا إلى رؤية تخصيص الذاكرة لتطبيقي. لقد قمت بتنزيل وتثبيت محلل ذاكرة 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