استعمل مربع البحث في الاسفل لمزيد من المواضيع
سريع للبحث عن مواضيع في المنتدى
-
11-01-2013, بتوقيت غرينيتش 03:12 PM
#1
[مهم جدا] تحرير الذاكرة ومعرفة الستاك stack وكيفية تفريغه
[ظ…ظ‡ظ… ط¬ط¯ط§] طھط*ط±ظٹط± ط§ظ„ط°ط§ظƒط±ط© ظˆظ…ط¹ط±ظپط© ط§ظ„ط³طھط§ظƒ stack ظˆظƒظٹظپظٹط© طھظپط±ظٹط؛ظ‡
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اليوم ان شاء الله سنتكلم عن موضوع مهم
والاهم من ذلك
هو ان الكثير من المبرمجين يغفل عنه ولا يلقي له بالاً
لكنه هو اداة قوية من ادوات نجاح برمجيته وسرعتها
الا وهو تحرير الذاكرة من المتغيرات التي نستخدمها
مقدمة نظرية:
من المعروف لدى الجميع، او على اقل تقدير معروف لدى من يعرف بالكمبيوتر، ان تنفيذ الاوامر في الكمبيوتر تتطلب داتا او ما يسمى بيانات لكي يستخدمها المعالج، وهو يخزن او يستورد هذه البيانات من الذاكرة الاساسية ويطلق عليها main memory ، اي باختصار الرام RAM
وفي حالتنا نحن من نقوم ببرمجة التطبيقات، يقوم المعالج بحفظ المتغيرات والثوابت في هذه الذاكرة،
لكن كيف يتم تخزين هذه البيانات؟
هذه البيانات تخزن داخل الذاكرة طبقا لمفهوم الstack ، طبعا السؤال الان ما هو ال stack؟
تخيل ان لديك صندوق كبير ومفتوح فقط من الجهة العلوية وانت تضع فيه الملفات
كل ملف فوق الاخر، والاهم من ذلك ان اخر ملف يوضع هو اول الملفات التي تخرج
يعني لو وضعت في قاع الستاك ملف ثم وضعت فوقه ملفات اخرى، ورجعت بدك تستخرجه لا بد انك تشيل معه كل اللي فوقه
هذا هو الستاك الفيزيائي اللي تكلمنا عنه
وهذا مثال مبسط

هذه الفكرة اقصد فكرة الستاك موجودة في الذاكرة التي تحدثنا عنها
كل متغير وكل شي يحتاج حفظ يتم حفظه في هذه الستاك في الذاكرة
لذلك اذا تركنا المتغيرات بعد الانتهاء منها بدون معالجة ، فاننا سنسبب مشكلة في الاداء
حتى في النهاية ممكن يصير عنا مشكلة معروفة لدى المبرمجين
وهي مشكلة stack overflow يمكن البعض سمع فيها
وهذا ما سنعالجه في درس مفصلنا البسيط لليوم
حل المشكلة:
لحسن الحظ الحل لهذا النوع من المشاكل يكون سهل جدا، ولا يحتاج اي خبرة او ذكاء او فهم عالي، الحل عبارة عن خطوة اضافية، قد تتعب في البداية، لكن الا ترى ان جودة برنامجك تستحق منك هذا القدر اليسير من الجهد البسيط؟ اتعتقد ذلك ام لا؟
الحل بيكون عن طريق تحرير الستاك من هذه المتغيرات، ولكن بعد انتهاءنا منها، وهو يكون على قسمين اللي هم اكثر استخداماً:
المتغيرات اللي بنستخدمها يا متغيرات حجزناها احنا ووضعنا فيها قيم عادية
مثلا
رمز PHP:
<code style="white-space:nowrap"> <code> $variable="some value";
</code> </code>
بعد استخدام المتغير والانتهاء منه
قم باضافة السطر التالي البسيط بطبيعة الحال
رمز PHP:
<code style="white-space:nowrap"> <code> unset($variable);
</code> </code>
اذن الحل عن طريق دالة unset التي مسؤوليتها هي تحرير الذاكرة من هذا المتغير
استهلاك الذاكرةالناتج عن استعلامات قواعد البيانات
وهذه تنتج بشكل مباشر من لود هذه الاستعلامات
مثلا
رمز PHP:
<code style="white-space:nowrap"> <code> $sql="sum query here";
</code> </code>
رمز PHP:
<code style="white-space:nowrap"> <code> $result=mysql_query($sql);
</code> </code>
في هذه الحالة نضيف الدالة التالية
رمز PHP:
<code style="white-space:nowrap"> <code> mysql_free_result($result);
</code> </code>
بذلك نكون قد حررنا الذاكرة من كثير من المساحة التي عدم تحريرها قد يؤدي الى اوفرفلو
ملاحظة اخيرة، هنالك ايضا بعض الامور التي تسبب ارتفاع استهلاك الذاكرة يمكنك معالجتها بسهولة
مثل اغلاق مقابض اتصالات قواعد البيانات عن طريق دالة
mysql_close();
وايضا اغلاق مقابض الملفات
عن طريق
fclose();
في الختام
ارجو ان يكون الدرس مفصل البسيط
قد نال اعجابكم واستحسانكم
فلا تنسونا من صالح الدعاء
الدرس مفصل من اعدادي انا اخوكم
مهند عيسى - فلسطين
التعديل الأخير كان بواسطة Hudaislam; 21 - 01 - 2014 الساعة 03:57

©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى©
المواضيع المتشابهه
-
بواسطة said في المنتدى منتدى الصحة العامة
مشاركات: 0
آخر مشاركة: 11-08-2013, بتوقيت غرينيتش 10:21 AM
-
بواسطة walid في المنتدى تقنيات المواقع SEO و XML و RSS و محركات البحث و الأرشفة
مشاركات: 0
آخر مشاركة: 11-01-2013, بتوقيت غرينيتش 10:01 PM
-
بواسطة walid في المنتدى لغات البرمجه للويب
مشاركات: 0
آخر مشاركة: 11-01-2013, بتوقيت غرينيتش 03:34 PM
-
بواسطة linnou في المنتدى لغات البرمجه للويب
مشاركات: 0
آخر مشاركة: 11-01-2013, بتوقيت غرينيتش 02:59 PM
-
بواسطة ام بهاء في المنتدى الاعشاب و الطب البديل
مشاركات: 0
آخر مشاركة: 09-30-2013, بتوقيت غرينيتش 10:46 PM
ضوابط المشاركة
- لا تستطيع إضافة مواضيع جديدة
- لا تستطيع الرد على المواضيع
- لا تستطيع إرفاق ملفات
- لا تستطيع تعديل مشاركاتك
-
قوانين المنتدى