سؤال

هل يمكنكم مساعدتي في العثور على تسرب الذاكرة؟ أنا من عالم C ++ وتسريبات الذاكرة في Java أمر غريب نوعًا ما بالنسبة لي لأنه وفقًا للكود الخاص بي ، لا أحتفظ بأي إشارات إلى الكائن المؤقت.

أنا أستخدم GAE SDK 1.6.1 و Objectify 3.1.

لدي الطريقة التالية التي يتم تنفيذها في مثيل الواجهة الخلفية لخادم GAE dev (والذي ربما يكون معلومات غير ذات صلة بالمشكلة). Genacodicetagpre

في مُنشئ ObjectifyDAO تتم تهيئته كـ Genacodicetagpre

ويكون رمز الترقيم العام بسيطًا مثل Genacodicetagpre

أنا أستخدم JProfiler 7.0.1 لالتقاط تسرب الذاكرة. بعد تشغيل هذا الرمز ، لدي بضعة ميغا بايت من رمز الترقيم العام ورمز الترقيم العام.

لا أريد تفجير هذا المنشور لذا قمت بتحميل لقطات شاشة من JProfiler.

شجرة المراجع هنا . شجرة التخصيص هنا .

لقد وجدت هذا الخطأ في متتبع Objectify و هذا الموضوع على Google Ground لـ GAE. لذلك لست متأكدًا من هذا الخطأ.

الأسئلة هي:

1) كيف تتجنب تسرب الذاكرة؟ 2) هل يحدث في الإنتاج؟

شكرًا !!!

PS. نيك ، أعلم أنك تقرأ هذا. الرجاء المساعدة :)

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

المحلول

تحقق من http://www.eclipse.org/mat/ والتي تعتبر رائعة في التحليلتسرب الذاكرة

راجع http://wiki.eclipse.org/index.php/MemoryAnalyzer#Getting_a_Heap_Dump

إذا حدث تسرب للذاكرة ، فهذا يعني أن هناك شيئًا معلقًا في المراجع.ستساعدك أداة مثل MAT في معرفة ما يتم تعليقه على تلك الكائنات.

قد ترغب أيضًا في تجربة اختبارك على الإنتاج.يمكنك التحقق من استخدام الذاكرة في عرض مثيلات appspot.com.يمكن أن يتصرف appengine في بعض الأحيان بشكل مختلف تمامًا.

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