واحدة من أكثر المزايا وضوحا لـ AVA هي آلية إدارة الذاكرة. تحتاج فقط إلى إنشاء كائنات ، آلية استرداد القمامة من Java مسؤولة عن تخصيص الذاكرة وإطلاقها. ومع ذلك ، فإن الموقف ليس بسيطًا كما هو متوقع ، لأن تسربات الذاكرة تحدث غالبًا في تطبيقات Java.
يوضح هذا البرنامج التعليمي ما هو تسرب الذاكرة ، ولماذا يوجد تسرب للذاكرة وكيفية منع تسرب الذاكرة.
ما هو تسرب الذاكرة؟
التعريف: إذا لم تعد الكائنات تستخدم في التطبيقات ، ولكن نظرًا لأنها يتم الاستشهاد بها في مكان آخر ، فلا يمكن إزالة إعادة تدوير القمامة (وهذا يسبب الكثير من الذاكرة غير معقولة ، مما يؤدي إلى تجاوز الفائض في الذاكرة).
لفهم هذا التعريف ، نحتاج إلى فهم حالة الكائن في الذاكرة. يوضح الشكل أدناه أولئك الذين لم يتم استخدامهم ، ولا يتم ذكر هؤلاء.
من الشكل ، يمكننا رؤية الكائن المرجعي والكائن غير المستعود (المدى). لا يجوز إعادة تدوير أي كائن مستشهد بواسطة آلية إعادة تدوير القمامة ، ولا يمكن إعادة تدوير الكائن المرجعي بواسطة آلية استرداد القمامة. بالطبع ، لا يتم استخدام الهدف لأنه لا توجد كائنات أخرى تقتبس منها. ومع ذلك ، لا يتم ذكر جميع الكائنات. لا تزال بعض الأشياء غير المستخدمة في مكان آخر! هذا هو سبب تسرب الذاكرة.
لماذا يحدث تسرب الذاكرة؟
دعنا نأتي إلى هذا المثال أدناه لنرى لماذا يحدث تسرب الذاكرة. في المثال التالي ، يشير كائن A إلى كائن B. دورة حياة A (T1-T4) أطول بكثير من دورة الحياة (T2-T3) لـ B. عندما لم تعد B في التطبيق ، لا يزال يحمل الإشارة إلى B. وبهذه الطريقة ، لا يمكن لآلية استرداد القمامة إزالة B من الذاكرة. من المحتمل أن يتسبب هذا في تبرضح في الذاكرة ، لأنه إذا كانت العديد من الكائنات الأخرى مثل A ، فسيكون هناك العديد من الكائنات التي لا يمكن إعادة تدويرها في الذاكرة ، والتي ستستهلك الكثير من مساحة الذاكرة.
من الممكن أيضًا أن يكون B يحمل عددًا كبيرًا من الإشارات إلى كائنات أخرى. لن يتم إعادة تدوير هذه الكائنات المشار إليها بواسطة B. كل هذه الكائنات غير المستخدمة سوف تستهلك مساحة الذاكرة الثمينة.
كيف تمنع تسرب الذاكرة؟
فيما يلي بعض المهارات السريعة لمنع تسرب الذاكرة:
1. انتبه إلى فئة التحصيل ، مثل HashMap ، ArrayList ، وما إلى ذلك ، لأنها تحدث في كثير من الأحيان تسرب الذاكرة. عندما يتم إعلانها كأشياء ثابتة ، فإن دورة حياتهم طالما أن دورة حياة التطبيق.
2. انتبه إلى مراقبة الحادث ورد الاتصال. إذا تم تسجيل فصل دراسي مع مستمع ، ولكن عندما لم تعد الفئة تستخدم ، قد لا يتم إلغاء جهاز المراقبة ، وقد تحدث تسرب الذاكرة.
3. "إذا كان الفصل يدير ذاكرته الخاصة ، فيجب أن يكون المبرمجون في حالة تأهب لتسرب الذاكرة."