x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
يعنى ايه Memory leaks ؟!
وليه لازم تتجنبها فى اى مشروع انت شغال عليه ؟!
فى الاول عايزك تفهم ال Memory عبارة عن ايه ( واقصد بال Memory هنا ال RAM )
تعالى نتخيل كدا مع بعض ان ال Memory ( وتحديدا ال Heap ) عبارة عن صندوق فاضى ومش متخزن جواه اى حاجه
- لما بتحتاج تخزن حاجه جوا الصندوق ده فبتاخد جزء من المساحة الفاضية دى وتحط كدا الحاجه اللى انت عايز تخزنها
- وهكذا مع اى حد حاجه جديدة عايز تخزنها لحد ما توصل لمرحلة ان الصندوق ده مبقاش فاضى وبقى مليان للاخر
ال Memory دى بقا بيتخزن فيها ال Objects او ال Threads او ال processes اللى انت بتنشئها وانت شغال فى اى مشروع
خلاص كدا فهمنا ال Memory عبارة عن ايه بمثال بسيط فخلينا بقا نروح لل Memory Leaks ونفهم هيا عبارة عن ايه
الـ Memory Leaks ده عبارة عن هدر للموارد المتاحة ليك و الموارد ده عبارة عن المساحة الفاضية فى ال Memory والهدر ده بيحصل بسبب الاتى :
- انك تحجز مساحة فى ال Memory انت مش محتاجها حاليا ( زى انك تعمل Object وتستخدمه وتخلص استخدامك ليه ومتمسحهوش من ال Memory او انك تحجز مساحة ل Object انت مش هتحتاجه اصلا )
- او انك تعمل Threads كتيرة وانت مش محتاج العدد ده من ال Threads
طب ازاى بقا نتجنب ال Memory Leaks دى ؟!
- فى بعض اللغات زى C او C++ لازم انت بنفسك تمسح اى Object انت مش محتاجه ومش هتستخدمه وبكدا هتتجنب ال Memory Leaks
- فى بعض اللغات التانيه شبه Java بيكون فيها حاجه مسؤولة انها تمسح اى Object مش مستخدم وده هيوفر عليك كتير انك مش محتاج تمسح ال Objects دول بنفسك
- فى بعض الحاجات لازم تتجنبها وانت بتتعامل مع Multiple Threads وده مش هنتكلم عنه دلوقتى علشان محتاج مقالة لواحده
طب ايه الاضرار اللى هتسببها ال Memory Leaks ؟!
- هيقلل الاداء بتاع الجهاز اللى انت شغال عليه ( سواء Android او Windows وهكذا )
- هيستنفذ مواد الجهاز بتاعك وده هيتسبب فى ان مش هيكون عندك مساحة كفاية علشان تخزن فيها اى عمليات جديدة وهذا
وليه لازم تتجنبها فى اى مشروع انت شغال عليه ؟!
فى الاول عايزك تفهم ال Memory عبارة عن ايه ( واقصد بال Memory هنا ال RAM )
تعالى نتخيل كدا مع بعض ان ال Memory ( وتحديدا ال Heap ) عبارة عن صندوق فاضى ومش متخزن جواه اى حاجه
- لما بتحتاج تخزن حاجه جوا الصندوق ده فبتاخد جزء من المساحة الفاضية دى وتحط كدا الحاجه اللى انت عايز تخزنها
- وهكذا مع اى حد حاجه جديدة عايز تخزنها لحد ما توصل لمرحلة ان الصندوق ده مبقاش فاضى وبقى مليان للاخر
ال Memory دى بقا بيتخزن فيها ال Objects او ال Threads او ال processes اللى انت بتنشئها وانت شغال فى اى مشروع
خلاص كدا فهمنا ال Memory عبارة عن ايه بمثال بسيط فخلينا بقا نروح لل Memory Leaks ونفهم هيا عبارة عن ايه
الـ Memory Leaks ده عبارة عن هدر للموارد المتاحة ليك و الموارد ده عبارة عن المساحة الفاضية فى ال Memory والهدر ده بيحصل بسبب الاتى :
- انك تحجز مساحة فى ال Memory انت مش محتاجها حاليا ( زى انك تعمل Object وتستخدمه وتخلص استخدامك ليه ومتمسحهوش من ال Memory او انك تحجز مساحة ل Object انت مش هتحتاجه اصلا )
- او انك تعمل Threads كتيرة وانت مش محتاج العدد ده من ال Threads
طب ازاى بقا نتجنب ال Memory Leaks دى ؟!
- فى بعض اللغات زى C او C++ لازم انت بنفسك تمسح اى Object انت مش محتاجه ومش هتستخدمه وبكدا هتتجنب ال Memory Leaks
- فى بعض اللغات التانيه شبه Java بيكون فيها حاجه مسؤولة انها تمسح اى Object مش مستخدم وده هيوفر عليك كتير انك مش محتاج تمسح ال Objects دول بنفسك
- فى بعض الحاجات لازم تتجنبها وانت بتتعامل مع Multiple Threads وده مش هنتكلم عنه دلوقتى علشان محتاج مقالة لواحده
طب ايه الاضرار اللى هتسببها ال Memory Leaks ؟!
- هيقلل الاداء بتاع الجهاز اللى انت شغال عليه ( سواء Android او Windows وهكذا )
- هيستنفذ مواد الجهاز بتاعك وده هيتسبب فى ان مش هيكون عندك مساحة كفاية علشان تخزن فيها اى عمليات جديدة وهذا