المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : كيفية إدارة الذاكرة في جافا سكريبت


عاشق الغيم
13-Feb-2023, 12:27 AM
في لغة البرمجة (JavaScript)، عندما ننشئ متغيرات أو وظائف أو أي شيء يمكن أن يخطر ببالك، يخصص محرك (JS) ذاكرة لهذا ويطلقها بمجرد عدم الحاجة إليها، حيث أن تخصيص الذاكرة هو عملية حجز مساحة في الذاكرة أثناء تحرير الذاكرة، مما يؤدي إلى توفير مساحة جاهزة للاستخدام لغرض آخر.

دورة حياة الذاكرة في جافا سكريبت


هناك (3) مراحل أو أجزاء من دورة حياة الذاكرة والتي هي نفسها لجميع لغات البرمجة؛ وهي:


تخصيص الذاكرة: حيث تعتني (JavaScript) بهذا الأمر فهي تخصص الذاكرة التي سيحتاجها المستخدم للكائن الذي أنشأه.


استخدام الذاكرة: حيث أن استخدام الذاكرة هو شيء نقوم به بشكل صريح في الكود الخاص بنا، حيث أن القراءة والكتابة في الذاكرة ليست سوى القراءة أو الكتابة من أو إلى متغير.

تحرير الذاكرة: يتم التعامل مع هذه الخطوة أيضًا بواسطة محرك (JavaScript)، حيث أنه بمجرد تحرير الذاكرة المخصصة، يمكن استخدامها لغرض جديد.


كيفية تخزين محرك جافا سكريبت / ذاكرة stack و heap


تقوم محركات (JavaScript) بتخزين بياناتها في مكانين؛ ذاكرة (Stack) وذاكرة (Heap)، فيما يلي توضيح لكل منهما:





1. ذاكرة Stack


وهي نوع من بنية البيانات التي تستخدم طريقة (Last-in-First-out (LIFO)) لتخزين البيانات الثابتة، بسبب حجمها الثابت، والمعروف أثناء وقت الترجمة بواسطة المحرك فهي ذاكرة ثابتة، وتشتمل البيانات الثابتة في (JavaScript) على مراجع للكائنات والوظائف بالإضافة إلى القيم الأولية مثل: (strings, number, Boolean, null, undefined, symbol, BigInt).



2. ذاكرة Heap


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



ما المقصود بتسرب ذاكرة جافا سكريبت


تسرب الذاكرة، هو تخصيص للذاكرة يتعذر على محرك (JavaScript) استرداده، حيث أنه عند إضافة كائنات ومتغيرات إلى برنامجك، يقوم محرك (JavaScript) بتخصيص الذاكرة، وهو ذكي بدرجة كافية لتحرير الذاكرة عندما لا تكون الكائنات مطلوبة، وتؤدي الأخطاء المنطقية إلى تسرب الذاكرة مما يؤثر سلبًا على سرعة برنامجك، لنلق نظرة على أكثر تسريبات ذاكرة جافا سكريبت شيوعًا:



1. المتغيرات العالمية Global Variables


عندما يتم تخزين البيانات في متغيرات عالمية، فإنه يتسبب في حدوث تسرب للذاكرة، مثل استخدام (var) في التعليمات البرمجية الخاصة بك بدلاً من (let أو const)، كما يتم تخزين المتغيرات غير المعلنة في الكائن العام، لتجنب هذا الوضع استخدم (strict) لتمكين تطبيقات أكثر أمانًا وكذلك منع المتغيرات العامة غير المرغوب فيها أو يمكنك تعيين المتغير العام إلى فارغ (مثل window.name = null) بعد الاستخدام لمنع تسرب ذاكرة (JavaScript) لأن هذه المراجع مخزنة مباشرة في الجذر ولا يمكن جمعها.

2. حدث Forgotten timers


(SetTimeout و SetInterval) هما حدثان زمنيان متاحان في (JavaScript) وهما ميزات مهمة للغاية، حيث أن (SetTimeout) هي وظيفة غير متزامنة يتم تنفيذها بعد انتهاء الوقت المحدد عادةً بالمللي ثانية، بينما يسمح (SetInterval) بالتنفيذ المتكرر للرمز على فترات زمنية مختلفة “وقت محدد”، حيث أن غالبية تسربات الذاكرة ناتجة عن هذه الموقتات، ولحل هذه المشكلة، استخدم دائمًا (() clearInterval) عندما تعرف أن الوظيفة لن تكون مطلوبة، سيكون كذلك (clearInterval (differentInterval)) لإلغاء الفاصل الزمني بعد استخدامه.

نَبض
13-Feb-2023, 01:28 AM
::

اختيار موفق
دام عطاءك

عشق
13-Feb-2023, 11:54 AM
سلمت الأيادي ..
ويعطيك العافية لـ جمال الآنتقاء
لروحك جنائن الورد

* السلطان *
13-Feb-2023, 12:06 PM
مرور

غالي

ربي

يسعدك

عطر المساء
13-Feb-2023, 04:11 PM
موضوع متميز
يعطيك العافية ولا عدمناك

الحر
14-Feb-2023, 09:08 AM
تسلم كفوفك ..
لطيب الجهد وَ تمُيز العطاء
لاحرمنا الله روائِع مجهوداتك
تقديري

غَيْم..!
14-Feb-2023, 01:10 PM
يعطيك الف عافية على الطرح
ل روحك الفرح ..

لحن
15-Feb-2023, 02:03 AM
_

يعطيك العافية
و دام عطائك و تميزك
تحيتي لك

رمق
25-Apr-2023, 08:43 PM
،



طرح جميل
انتقاء مميز
كل الشكر ،،

حـُـلم
11-Jul-2023, 08:01 PM
سلمت يمناك
الله يعطيك الف عافيه

الجادل
11-Jul-2023, 10:35 PM
،


يعطيك العافية
انتقاء متميز وجميل
سلمت ودمت بهالحضور الراقي
شكرا لك

،

اسير الذكريات
14-Sep-2023, 02:31 AM
..



طرح جميـــــل ..||
دام التألق ... ودام عطاء نبضك
كل الشكر لهذا الإبداع,والتميز...!!
وبآنتظار روائع جديدك بكل شوق...!
ودي وعبق وردي ..
http://up.3dlat.com/uploads/3dlat.com_14025248457.gif

AL-PRINCE
16-Nov-2023, 06:49 AM
أحسنتم الطرح
بآرك الله في جهودكم
ودمتم بهذا التوهج
الله يعطيكم الصحة العآفية
https://up.zalghaym.com/do.php?img=28392 (https://up.zalghaym.com/)

الراقية ♔
01-Jan-2024, 06:15 PM
الله يعطيك العافية