سؤال

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

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

المحلول

على الرغم من -XX:+HeapDumpOnOutOfMemoryError يمكن أن تكون مفيدة ، سير العمل الحالي لاستخدام الكسوف إدارة الذاكرة هي:

  1. تشغيل البرنامج بشكل طبيعي
  2. انتظر الذاكرة للخروج من ناحية.
  3. تشغيل jmap: jmap -dump:format=b,file=dump.hprof <PID>
  4. فتح hprof ملف EMM.

وعادة ما تبدأ العمل مع الرسم البياني و المسيطر شجرة الآراء لمعرفة إذا كان أي شيء يبدو الخروج من أجتز ، ثم أسفل من هناك.

VisualVM يمكن أن تكون مفيدة ولكن يبدو أقل كفاءة من EMM عند العمل مع كومة تفريغ (EMM بتخزين الكثير من المعلومات حول التحميل كومة تفريغ).Netbeans التعريف هو لطيف للحصول على مواقع المخصصات الوقت التنميط.

نصائح أخرى

ولعل أبسط شيء هو أن تشغيل البرنامج تحت HProf (يأتي معيار كما هو الحال مع JVM) لبعض الوقت، وفرض الخروج. إخراج HProf يجب أن تعطي نأمل أن بعض المؤشرات يعاد فورا. تسرب الذاكرة الخاصة بك.

وعلى عكس المصحح ذاكرة الكسوف (والتي أنا على دراية فقط من ما تكتبه) يمكنك جمع إحصاءات من أي نقطة في التنفيذ.

فإنه يشير إلى أن كنت بحاجة إلى ترك برنامج تشغيل حتى تعطل (من الذاكرة يحدث خطأ) ، والتي سوف يولد تقرير الحادث.

أنا لا أعتقد أن هذا صحيحا - أنك لن تحصل على ملف تفريغ عندما OutOfMemoryError يحدث (أراهن المؤلف هو مربكة هذه المشكلة مع بعض نوع من JVM الخلل الذي قد يسبب تفريغ الأساسية ليتم حفظها).

وأفضل طريقة هي أن تأخذ كومة تفريغ باستخدام jmap;هذا سيتم إخراج محتويات كومة الذاكرة المؤقتة إلى ملف ثنائي (يعرف عادة hprof الملف).هذا الملف ثم يمكن تحليلها من قبل أي عدد من المحللات:

  • jhat - الشمس أداة تحليل hprof الملف و تبدأ جزءا لا يتجزأ من خادم الويب حتى تتمكن من تحليل كومة من خلال مستعرض ويب / عرض التقارير.لقد وجدت أن هذا هو جدا بطء كبير أكوام.
  • VisualVM - رهيبة التصحيح/استكشاف الأخطاء وإصلاحها أداة واحدة مع JDK.من بين أمور أخرى ، هذا ويمكن أيضا أن تستخدم لتوليد كومة تفريغ من أي عملية قيد التشغيل ، وكذلك موضوع تفريغ.لقد وجدت أنه بطيء جدا في التحميل كبيرة hprof الملفات وكذلك على الرغم.
  • الكسوف الذاكرة محلل - الكسوف البرنامج المساعد التي يمكن أن تولد hprof الملفات.

أود أن أوصي باستخدام الكسوف المساعد, كما أنه سريع جدا في تحميل كبيرة (> 500MB) كومة مقالب (في أقل من دقيقة) ، وتنتج تقارير مفيدة, يدعم لغة الاستعلام مع منطق معقد ، إلخ.

هذه الصفحة يفسر العمل مع مقالب JVM الكومة. Jhat هو، إذا طريقة الرسم أقل بساطة العمل مع أكوام، ولكن يمكنك أيضا تحميل ملفات تفريغ نفسها في إدارة الذاكرة الكسوف. يمكنك أيضا الحصول على بعض المعلومات من jvisualvm، إذا كنت تستخدم (1.6) JVM الحالي.

وأنا عموما تفضل التنميط التطبيقات باستخدام netbeans المحلل. يمكنك ان ترى بسهولة إلى حد ما الأشياء التي تتسرب والتي يتم إنشاؤها في معظم الحالات. هناك احتمالا العديد من الأدوات الأخرى التي سوف نفعل ذلك أيضا، ولكن أنا أعلم أن التعريف نتبيانس يعمل بشكل جيد، وسهل الاستخدام.

يمكنك محاولة استخدام Jprobe.يمكنك مراقبة التطبيق الخاص بك يمكن أن ننظر إلى الأشياء كما أنها تحصل على خلق.أيضا هذا سوف يساعد على تحليل ما الأشياء لا تحصل على جمع القمامة و سوف تكون مؤشرات على الانتقال.

على الرغم من أنها ليست حرة, ولكن أتذكر أنه يأتي مع الترخيص المحاكمة ، حتى تحقق ذلك.

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