تت٠ع٠ÙÙØ© ادارة Ø§ÙØ°Ø§Ùرة Ù٠اÙJavaScript بطرÙÙØ© تÙÙØ§Ø¦ÙØ© ØºÙØ± Ù Ø±Ø¦ÙØ© ÙØÙ ÙÙØ´Ø¦ ÙØ¨ÙÙÙ Ø§ÙØ¨Ø³Ùطة, اÙÙØ§Ø¦Ùات , Ø§ÙØ¯ÙاÙ⦠٠Ù٠ذÙÙ ÙØ³ØªÙÙÙ Ù Ù Ø§ÙØ°Ø§Ùرة.
٠ا Ø§ÙØ°Ù Ø³ÙØØ¯Ø« اذا ÙÙ ÙØ¹Ø¯ Ø¨ØØ§Ø¬Ø© ÙØ£ØØ¯ÙÙ Ø ÙÙÙ ÙÙØªØ´ÙÙØ§ Ù ØØ±Ù ا٠JavaScript Ù ÙØªØ®Ùص Ù ÙÙØ§ Ø
ÙØ§Ø¨ÙÙØ© اÙÙØµÙÙ
اÙÙ ÙÙÙÙ Ø§ÙØ£Ø³Ø§Ø³Ù ÙØ¹Ù ÙÙØ© ادارة Ø§ÙØ°Ø§Ùرة Ù٠ا٠JavaScript ÙÙ ÙØ§Ø¨ÙÙØ© اÙÙØµÙÙ.
ببساطة, اÙÙÙÙ Ø§ÙØªÙ ÙÙ Ù٠اÙÙØµÙ٠اÙÙÙØ§ Ù٠اÙÙÙÙ Ø§ÙØªÙ ÙÙ Ù٠اÙÙÙÙØ¬ اÙÙÙØ§ Ù Ø§Ø³ØªØ®Ø¯Ø§Ù ÙØ§ بشÙ٠٠ا, ٠تخزÙÙÙØ§ ÙÙ Ø§ÙØ°Ø§Ùرة شئ ØØªÙ Ù.
-
ÙÙØ§Ù بعض اÙÙÙÙ Ø§ÙØ£Ø³Ø§Ø³ÙØ© Ø§ÙØªÙ ÙÙ Ù٠اÙÙØµÙ٠اÙÙÙØ§ Ø¯Ø§Ø¦Ù Ø§Ù ÙØ§ ÙÙ Ù٠٠سØÙا ÙØ£Ø³Ø¨Ø§Ø¨ ÙØ§Ø¶ØØ©. عÙ٠سبÙ٠اÙ٠ثاÙ:
- اÙÙ ØªØºÙØ±Ø§Øª اÙÙ ØÙÙØ© ٠اÙÙ Ø¹Ø§Ù ÙØ§Øª ÙÙØ¯Ø§ÙØ© Ø§ÙØªÙ ÙØªÙ Ø§Ø³ØªØ®Ø¯Ø§Ù ÙØ§
- اÙÙ ØªØºÙØ±Ø§Øª Ù Ù Ø¹Ø§Ù ÙØ§Øª Ø§ÙØ¯Ùا٠ÙÙ Ø³ÙØ³ÙØ© Ù ØªØµÙØ© Ù Ù Ø§ÙØ§Ø³ØªØ¯Ø¹Ø§Ø¡Ø§Øª
- اÙÙ ØªØºÙØ±Ø§Øª Ø§ÙØ¹Ø§Ù Ø©
- (ÙÙØ§Ù٠اÙÙ Ø²ÙØ¯, بعضÙ٠داخÙÙ)
ÙØ°Ù اÙÙÙ٠تس٠٠ب Ø§ÙØ¬Ø°Ùر (roots).
-
Ø£Ù ÙÙÙ Ø© اخر٠ÙÙ ÙÙ Ø§Ø¹ØªØ¨Ø§Ø±ÙØ§ ÙØ§Ø¨ÙØ© ÙÙÙØµÙ٠اÙÙÙØ§ اذا ٠ا ÙØ§Ù ÙÙ Ù٠اÙÙØµÙ٠اÙÙÙØ§ باÙÙØ¹Ù ٠٠جذر ع٠طرÙ٠٠رجع(reference) Ø§Ù Ù Ø¬Ù ÙØ¹Ø© ٠٠اÙ٠راجع.
عÙ٠سبÙ٠اÙ٠ثاÙ, اذا ÙØ§Ù ÙÙØ§Ù ÙØ§Ø¦Ù ٠خز٠ÙÙ Ù ØªØºÙØ± Ù ØÙÙ, ٠اÙÙØ§Ø¦Ù Ø¨Ù Ø®Ø§ØµÙØ© ٠رج٠ÙÙØ§Ø¦Ù اخر, ÙÙ Ù٠اعتبار ÙØ°Ø§ اÙÙØ§Ø¦Ù اÙÙ ÙÙ Ù٠اÙÙØµÙ٠اÙÙÙ, Ù ÙÙ Ù٠اÙÙØµÙÙ Ø§ÙØ¶Ø§ اÙÙ Ù٠٠راجع ÙØ°Ø§ اÙÙØ§Ø¦Ù, Ù٠ا ÙØªÙ شرØÙ Ù٠اÙÙ Ø«Ø§Ù Ø§ÙØªØ§ÙÙ.
ØªØØ¯Ø« ع٠ÙÙØ© Ø®ÙÙÙØ© ÙÙ Ù ØØ±Ù ا٠JavaScript ÙØ³Ù ٠ب جا٠ع اÙÙ٠ا٠ة garbage collector ÙØªÙ Ø®ÙØ§ÙÙØ§ Ù Ø±Ø§ÙØ¨Ø© Ù٠اÙÙØ§Ø¦Ùات Ù Ø§Ø²Ø§ÙØ© اÙÙØ§Ø¦Ùات Ø§ÙØªÙ ÙØ§ ÙÙ Ù٠اÙÙØµÙ٠اÙÙÙØ§.
Ù Ø«ÙÙÙØ§Ù Ø¨ÙØ³ÙÙÙØ·
ÙØ°Ø§ ÙÙØ§ ابسط Ù Ø«ÙØ§Ù:
// user ÙÙ Ù
رجع اÙ٠اÙÙØ§Ø¦Ù
let user = {
name: "John"
};
Ø§ÙØ³ÙÙ
ÙÙØ§ ÙÙ
ث٠Ù
رجع ÙÙØ§Ø¦Ù, اÙÙ
ØªØºÙØ± Ø§ÙØ¹Ø§Ù
"user" ÙØ±Ø¬Ø¹ اÙ٠اÙÙØ§Ø¦Ù {name: "John"} (Ø§ÙØ°Ù Ø³ÙØ·Ù٠عÙÙ٠جÙ٠اختصارا).
Ø®Ø§ØµÙØ© "name" ÙÙ ÙØ§Ø¦Ù جÙ٠تخز٠ÙÙÙ
Ø© Ø¨Ø³ÙØ·Ø© ÙØ°Ø§ تÙ
رسÙ
ÙØ§ داخ٠اÙÙØ§Ø¦Ù.
اذا تÙ
استخداÙ
اسÙ
اÙÙ
ØªØºÙØ± user Ù
رة اخر٠, ÙÙØ§ ÙØªÙ
ÙÙØ¯Ø§Ù Ù
رجع اÙÙØ§Ø¦Ù:
user = null;
ÙÙØ§ ÙØ§ ÙÙ Ù٠اÙÙØµÙ٠اÙÙ ÙØ§Ø¦Ù جÙÙ Ù Ø¨Ø§ÙØªØ§ÙÙ ÙØ§ ÙÙ ÙÙ Ø§ÙØ¯Ø®Ù٠اÙÙÙ ÙØ¹Ø¯Ù ÙØ¬Ùد ٠رجع ÙÙ, Ù ÙÙØ§ ÙØ£ØªÙ Ø¯ÙØ± جا٠ع اÙÙ٠ا٠ة ÙÙØªØ®Ùص Ù Ù Ø¨ÙØ§ÙØ§ØªÙ Ù Ø§ÙØ±Ø§Øº اÙÙ Ø³Ø§ØØ© Ø§ÙØªØ®Ø²ÙÙÙØ©.
٠رجعÙÙ
ØªØµÙØ± Ø§ÙØ£Ù اÙÙØ§ ÙØ³Ø®Ùا Ù
رجع user اÙÙ admin:
// user ÙÙ Ù
رجع اÙ٠اÙÙØ§Ø¦Ù
let user = {
name: "John"
};
let admin = user;
Now if we do the same:
user = null;
â¦ÙÙ ÙØ°Ù Ø§ÙØØ§ÙØ© Ù
ا Ø²Ø§Ù Ø¨Ø§ÙØ§Ù
ÙØ§Ù اÙÙØµÙ٠اÙ٠اÙÙØ§Ø¦Ù ع٠طرÙ٠اÙÙ
ØªØºÙØ± Ø§ÙØ¹Ø§Ù
admin, ÙØ°Ø§ ÙÙÙ Ù
Ø®Ø²Ù Ø¨Ø§ÙØ°Ø§Ùرة. اذا تÙ
استخداÙ
اÙÙ
ØªØºÙØ± admin ÙÙ Ù
ÙØ§Ù أخر Ø§ÙØ¶Ø§ ÙÙØ§ ÙÙ
ÙÙ Ø§Ø²Ø§ÙØ© اÙÙØ§Ø¦Ù .
اÙÙØ§Ø¦Ùات اÙ٠ترابطة
Now a more complex example. The family: Ù Ø§ÙØ§Ù اÙÙ Ù Ø«Ø§Ù Ø£ÙØ«Ø± تعÙÙØ¯Ø§, ÙÙ Ø§ÙØ¹Ø§Ø¦ÙØ©:
function marry(man, woman) {
woman.husband = man;
man.wife = woman;
return {
father: man,
mother: woman
}
}
let family = marry({
name: "John"
}, {
name: "Ann"
});
Ø§ÙØ¯Ø§ÙØ© marry âØªØ²ÙØ¬â ÙØ§Ø¦ÙÙ٠ع٠طرÙ٠اعطاء ÙÙ Ù
ÙÙÙ
Ù
رجع ÙÙØ£Ø®Ø± ٠ترجع ÙØ§Ø¦Ù Ø¬Ø¯ÙØ¯ ÙØØªÙÙ ÙÙÙÙÙ
ا.
Ø§ÙØ¨Ùاء اÙÙØ§ØªØ¬ ÙÙ Ø§ÙØ°Ø§Ùرة:
ØØªÙ Ø§ÙØ£Ù, Ù٠اÙÙØ§Ø¦Ùات ÙÙ Ù٠اÙÙØµÙ٠اÙÙÙØ§. Ù Ø§ÙØ£Ù ÙÙÙØ²Ù٠اثÙÙ٠٠٠اÙ٠راجع:
delete family.father;
delete family.mother.husband;
Ø§ÙØºØ§Ø¡ ٠رجع ÙØ§ØØ¯ ÙÙØ· ٠٠اÙ٠رجعÙÙ ÙØ§ ÙÙÙÙ ,Ø³ØªØ¸Ù Ø§Ù ÙØ§ÙÙØ© اÙÙØµÙ٠اÙ٠اÙÙØ§Ø¦ÙÙÙ Ù Ù ÙÙØ©.
Ù ÙÙ٠اذا ØªÙ Ø§ÙØºØ§Ø¡ اÙ٠رجعÙÙ, ÙÙØ§ ÙÙ ÙÙ Ø§Ù ÙØ±Ù ا٠جÙÙ ÙÙ ÙØ¹Ø¯ Ù٠ا٠٠رجع:
Outgoing references do not matter. Only incoming ones can make an object reachable. So, John is now unreachable and will be removed from the memory with all its data that also became unaccessible.
بعد ع٠ÙÙØ© ج٠ع اÙÙ٠ا٠ة:
Ø§ÙØ¬Ø²Ùرة Ø§ÙØªÙ ÙØ§ ÙÙ Ù٠اÙÙØµÙ٠اÙÙÙØ§
ÙÙØ§ÙÙ Ø§Ù ÙØ§ÙÙØ© Ø§Ù ØªØµØ¨Ø Ø¬Ø²ÙØ±Ø© بأÙÙ ÙÙØ§ ٠٠اÙÙØ§Ø¦Ùات اÙ٠ترابطة ÙØ§ ÙÙ Ù٠اÙÙØµÙ٠اÙÙÙØ§ ٠ا٠ت٠ØÙ Ù Ù Ø§ÙØ°Ø§Ùرة.
اÙÙØ§Ø¦Ù ÙÙ Ù٠ا باÙÙ Ø«Ø§Ù Ø§ÙØ³Ø§Ø¨Ù, Ù Ø¨Ø§ÙØªØ§ÙÙ:
family = null;
Ø§ÙØµÙرة Ù Ù Ø¯Ø§Ø®Ù Ø§ÙØ°Ø§Ùرة ØªØµØ¨Ø ÙØ§ÙتاÙÙ:
ÙØ°Ø§ اÙÙ Ø«Ø§Ù ÙØ´Ø±Ø اÙÙ ÙØ© Ù ÙÙÙÙ ÙØ§Ø¨ÙÙØ© اÙÙØµÙÙ
٠٠اÙÙØ§Ø¶Ø ا٠جÙ٠٠آ٠٠ا Ø²Ø§ÙØ§ ٠تصÙÙ٠ببعضÙ٠ا ب٠راجع, ÙÙÙ ÙØ°Ø§ ØºÙØ± ÙØ§ÙÙ
ÙØ§Ø¦Ù "family" Ø§ÙØ³Ø§Ø¨Ù ÙÙØ¯ اتصاÙÙ Ø¨Ø§ÙØ¬Ø°Ø±, ÙØ§ ÙÙØ¬Ø¯ Ù٠ا٠Ù
رجع Ø§ÙØ¢Ù, ÙØ°Ø§ ÙØ§ÙØ¬Ø²ÙØ±Ø© باÙÙ
ÙÙØ§ ÙØ§ ÙÙ
Ù٠اÙÙØµÙ٠اÙÙÙØ§ ٠تتÙ
Ø§Ø²Ø§ÙØªÙا.
Ø§ÙØ®ÙØ§Ø±Ø²Ù ÙØ§Øª Ø§ÙØ¯Ø§Ø®ÙÙØ©
The basic garbage collection algorithm is called âmark-and-sweepâ.
Ø§ÙØ®ÙارزÙ
ÙØ© Ø§ÙØ£Ø³Ø§Ø³ÙØ© ÙØ¬Ù
ع اÙÙÙ
اÙ
Ø© تسÙ
٠ب "mark-and-sweep".
ØªØØ¯Ø« ع٠ÙÙØ© ج٠ع اÙÙ٠ا٠ة ØºØ§ÙØ¨Ø§ عÙ٠عدة Ø®Ø·ÙØ§Øª:
- جا٠ع اÙÙ٠ا٠ة ÙØ£Ø®Ø° Ø§ÙØ¬Ø°Ø± Ù ÙØ¶Ø¹ عÙÙÙ Ø¹ÙØ§Ù Ø©
- Ø«Ù ÙØ²Ùر Ù٠اÙ٠راجع اÙ٠رتبطة Ø¨Ù Ù ÙØ¶Ø¹ عÙÙ ÙÙ Ù ÙÙÙ Ø¹ÙØ§Ù Ø©
- Ø«Ù ÙØ²Ùر ÙÙ Ù٠اÙÙØ§Ø¦Ùات Ø§ÙØªÙ عÙÙÙØ§ Ø¹ÙØ§Ù Ø© Ù ÙØ¶Ø¹ Ø¹ÙØ§Ù Ø© عÙÙ Ù٠٠راجعÙÙ , Ù٠اÙÙØ§Ø¦Ùات Ø§ÙØªÙ ت٠ت Ø²ÙØ§Ø±ØªÙا ÙØªÙ ØªØ°ÙØ±Ùا ØØªÙ ÙØ§ ØªØªÙ Ø²ÙØ§Ø±Ø© ÙÙØ³ اÙÙØ§Ø¦Ù ٠رتÙÙ.
- ⦠٠ÙÙØ°Ø§ اÙÙ Ø§Ù ÙØªÙ ÙØ¶Ø¹ Ø¹ÙØ§Ù Ø© عÙÙ Ù٠اÙ٠راجع Ø¨Ø¯Ø§ÙØ© Ù Ù Ø§ÙØ¬Ø°Ø±
- Ù٠اÙÙØ§Ø¦Ùات Ø¹Ø¯Ù Ø§ÙØªÙ ØªÙ ÙØ¶Ø¹ Ø¹ÙØ§Ù Ø© عÙÙÙØ§ ÙØªÙ Ø§Ø²Ø§ÙØªÙا
Ù٠ثاÙ, ÙÙÙÙØªØ±Ø¶ Ø§Ù Ø¨ÙØ§Ø¡ اÙÙØ§Ø¦Ù ÙØ¯ÙÙØ§ ÙØ§ÙتاÙÙ:
ÙÙ
ÙÙÙØ§ بÙ٠بساطة Ù
ÙØ§ØØ¸Ø© Ø¬Ø²ÙØ±Ø© ÙØ§ ÙÙ
Ù٠اÙÙØµÙ٠اÙÙÙØ§ ÙÙ Ø§ÙØ¬Ø§Ùب Ø§ÙØ£ÙÙ
Ù. Ù Ø§ÙØ¢Ù ÙØ³ØªØ·Ùع Ø§Ù ÙØ±Ù ÙÙÙ ÙØ·Ø¨Ù جاÙ
ع اÙÙÙ
اÙ
ة ا٠"mark-and-sweep".
Ø£ÙÙ Ø®Ø·ÙØ© ÙÙ ÙØ¶Ø¹ Ø¹ÙØ§Ù Ø© Ø¹Ù Ø§ÙØ¬Ø°Ø±:
Ø«Ù ÙØ¶Ø¹ Ø¹ÙØ§Ù Ø© عÙÙ Ù٠اÙ٠راجع اÙ٠رتبطة بÙ:
â¦Ù Ù Ø±Ø§Ø¬Ø¹Ù ÙØ°Ù٠ا٠ا٠ÙÙ
Ù Ø§ÙØ¢Ù, Ù٠اÙÙØ§Ø¦Ùات Ø§ÙØªÙ ÙÙ ØªØªÙ Ø²ÙØ§Ø±ØªÙا ÙÙ ÙØ°Ù Ø§ÙØ¹Ù ÙÙØ© تعتبر ÙØ§Ø¦Ùات ÙØ§ ÙÙ Ù٠اÙÙØµÙ٠اÙÙÙØ§ Ù Ø³ØªØªÙ Ø§Ø²Ø§ÙØªÙا:
ÙÙ ÙÙÙØ§ تخÙÙ Ø§ÙØ¹Ù ÙÙØ© ÙØµØ¨ دÙÙ ÙØ¨Ùر Ù Ù Ø§ÙØ·Ùاء Ù Ù Ø§ÙØ¬Ø°Ø± Ù Ø§ÙØ°Ù Ø³ÙØ³Ø±Ù Ø®ÙØ§Ù Ù٠اÙ٠راجع Ù ÙØ¶Ø¹ Ø¹ÙØ§Ù Ø© عÙÙ Ù٠اÙÙØ§Ø¦Ùات Ø§ÙØªÙ ÙÙ Ù٠اÙÙØµÙ٠اÙÙÙØ§, ٠اÙÙØ§Ø¦Ùات Ø§ÙØªÙ ÙØ§ ÙÙ Ù٠اÙÙØµÙ٠اÙÙÙØ§ ÙØªÙ Ø§Ø²Ø§ÙØªÙا.
تÙÙ Ù٠اÙ٠بادئ Ø§ÙØªÙ ÙØ¹Ù ٠عÙÙ Ø§Ø³Ø§Ø³ÙØ§ جا٠ع اÙÙ٠ا٠ة. Ù ØØ±Ù ا٠JavaScript ÙØ·Ø¨Ù Ø§ÙØ¹Ø¯Ùد Ù Ù Ø§ÙØªØØ³ÙÙØ§Øª ÙØ¬Ø¹ÙÙ ÙØ¹Ù ٠بشÙ٠اسرع Ù Ø§ÙØ§ ÙØ¤Ø«Ø± عÙÙ Ø§ÙØ¢Ø¯Ø§Ø¡.
بعض ÙØ°Ù Ø§ÙØªØØ³ÙÙØ§Øª:
-
Ù Ø¬Ù ÙØ¹Ø© Ø§ÙØ£Ø¬Ùا٠â â ÙØªÙ ØªÙØ³Ù٠اÙÙØ§Ø¦Ùات اÙÙ Ù Ø¬Ù ÙØ¹ØªÙÙ âØ§ÙØ¬Ø¯Ùدةâ, âØ§ÙÙØ¯ÙÙ Ø©â, اÙÙØ«Ùر ٠٠اÙÙØ§Ø¦Ùات ÙØªÙ Ø§ÙØ´Ø§Ø¦Ùا Ù ØªØ¤Ø¯Ù ÙØ¸ÙÙØªÙا Ù ØªÙ ÙØª بسرعة, ÙÙÙ ÙÙ Ø§ÙØªØ®Ùص Ù ÙÙØ§ بسرعة. ا٠ا اÙÙØ§Ø¦Ùات Ø§ÙØªÙ ØªØ¹ÙØ´ ÙÙØªØ±Ø© Ø·ÙÙØ© ØªØµØ¨Ø âÙØ¯ÙÙ Ø©â Ù ÙØ§ ÙØªÙ Ø§ÙØªØÙÙ Ù ÙÙØ§ Ù Ø§Ø²Ø§ÙØªÙا بÙÙØ³ اÙÙØ«Ø§ÙØ©.
-
اÙÙ Ø¬Ù ÙØ¹Ø© اÙÙ ØªØ²Ø§ÙØ¯Ø© --ÙÙ ØØ§ÙØ© ÙØ¬Ùد Ø§ÙØ¹Ø¯Ùد ٠٠اÙÙØ§Ø¦Ùات, Ù ØØ§ÙÙÙØ§ اÙÙ Ø±ÙØ± ÙÙØ¶Ø¹ Ø¹ÙØ§Ù Ø© عÙ٠اÙÙØ§Ø¦Ù ÙÙ٠٠رة ÙØ§ØØ¯Ø©, Ø³ÙØ³ØªÙÙÙ ÙØ°Ø§ بعضا ٠٠اÙÙÙØª ٠٠ا ÙØ¯ ÙØ¤Ø¯Ù اÙ٠بعض Ø§ÙØªØ£Ø®Ùر Ù٠ع٠ÙÙØ© Ø§ÙØªÙÙÙØ°, ÙØ°ÙÙ ÙØØ§Ù٠جا٠ع اÙÙ٠ا٠ة ØªÙØ³ÙÙ ÙÙØ³Ù اÙ٠اجزاء, ÙÙ Ø§ÙØ£Ø¬Ø²Ø§Ø¡ ÙØªÙ Ø§Ø³ØªØ®Ø¯Ø§Ù ÙØ§ ÙØØ¯ÙØ§ ÙØ§ØØ¯Ø© تÙÙ Ø§ÙØ£Ø®Ø±Ù, ٠٠ا ÙØ¯ ÙØªØ·Ùب اÙÙ Ø²ÙØ¯ Ù Ù Ø§ÙØ§Ø¯Ø§Ø±Ø© Ù٠تابعة Ø§ÙØªØºÙÙØ±Ø§Øª ٠تسجÙÙÙØ§, Ù ÙÙÙ ØªØ£Ø®ÙØ±Ø§Øª Ø¹Ø¯ÙØ¯Ø© ØµØºÙØ±Ø© Ø§ÙØ¶Ù Ù Ù ØªØ£Ø®ÙØ± ÙØ§ØØ¯ ÙØ¨Ùر.
-
Ù Ø¬Ù ÙØ¹Ø© ÙÙØª Ø§ÙØ®Ù ÙÙ â ÙØØ§Ù٠جا٠ع اÙÙ٠ا٠ة Ø§Ù ÙØ¹Ù Ù ÙÙ ØØ§ÙØ© Ø§Ù ÙØØ¯Ø© اÙÙ Ø¹Ø§ÙØ¬Ø© اÙÙ Ø±ÙØ²ÙØ© (CPU) ÙÙ ØØ§ÙØ© خ٠ÙÙ ØØªÙ ÙØ§ ÙØ¤Ø«Ø± عÙ٠ع٠ÙÙØ© Ø§ÙØªÙÙÙØ°.
ÙÙØ§ÙÙ Ø§ÙØ¹Ø¯Ùد Ù Ù Ø§ÙØªØØ³ÙÙØ§Øª ÙÙ Ø®ÙØ§Ø±Ø²Ù ÙØ§Øª جا٠ع اÙÙ٠ا٠ة. ٠عÙÙ ÙØ¯Ø± ٠ا Ø§ÙØ¯ ا٠اشرØÙا ÙÙØ§,ÙØ¬Ø¨ Ø§Ù ÙØªÙÙ٠٠ذÙÙ ÙØ£Ù اÙÙ ØØ±Ùات Ø§ÙØ®ØªÙÙØ© تتبÙ٠طر٠٠ØÙÙ٠٠ختÙÙØ© Ù Ø§ÙØ£Ù٠٠٠ذÙÙ Ø§Ù Ø§ÙØ£Ø´Ùاء ØªØªØºÙØ± Ø¨ØªØªØ·ÙØ± اÙÙ ØØ±Ùات, ÙØ°Ø§ ادرس Ø£ÙØ«Ø± âÙ ÙØ¯Ù اâ ÙØ¨Ø¯ÙÙ Ø§ÙØØ§Ø¬Ø© Ø§ÙØÙÙÙÙØ© ÙÙ Ø¹Ø±ÙØªÙا ÙÙÙ ÙØ§ تستØÙ Ø§ÙØ¹Ùاء Ø§ÙØ§ ا٠ÙÙØª Ù Ø¨Ø§ÙØ·Ø¨Ø¹ ت٠تÙÙ Ø§ÙØ´ØºÙ ÙÙÙ Ø¹Ø±ÙØ© ÙØ§ÙØ±ÙØ§Ø¨Ø· Ø¨Ø§ÙØ£Ø³ÙÙ Ø³ØªØ³Ø§Ø¹Ø¯Ù Ø¨Ø§ÙØªØ£ÙÙØ¯.
اÙÙ ÙØ®Øµ
اÙ٠اÙÙÙØ§Ø· ÙØªØ¹Ø±ÙÙØ§:
- جا٠ع اÙÙ٠ا٠ة ÙØ¹Ù ٠بشÙ٠تÙÙØ§Ø¦Ù, ÙØ§ ÙÙ Ù٠اجبار٠عÙÙ Ø§ÙØ¹Ù ٠ا٠اÙÙØ§ÙÙ
- اÙÙØ§Ø¦Ùات تظ٠ÙÙ Ø§ÙØ°Ø§Ùرة طاÙ٠ا ÙØ§Ù باÙÙ ÙØ§Ù اÙÙØµÙ٠اÙÙÙØ§
- ÙÙ٠اÙÙØ§Ø¦Ù Ù٠٠رجع ÙØ§ ÙØ¹ÙÙ Ø¨Ø§ÙØ¶Ø±Ùرة ا٠ÙÙ Ù٠اÙÙØµÙ٠اÙÙÙ(Ù Ù Ø§ÙØ¬Ø°Ø±): ÙØ¯ ØªØµØ¨Ø Ù Ø¬Ù ÙØ¹Ø© ٠٠اÙÙØ§Ø¦Ùات ÙØ§ ÙÙ Ù٠اÙÙØµÙ٠اÙÙÙØ§
اÙÙ ØØ±Ùات Ø§ÙØØ¯ÙØ«Ø© ØªØ·ÙØ± Ø®ÙØ§Ø±Ø²Ù ÙØ§Øª ØØ¯Ùثة ÙØ¹Ù ÙÙØ© ج٠ع اÙÙ٠ا٠ة
ÙØªØ§Ø¨ "The Garbage Collection Handbook: The Art of Automatic Memory Management"(R.Jones et al) ÙØ¬Ù
ع Ø¨Ø¹Ø¶ÙØ§
اذا ÙÙØª عÙ٠عÙÙ
باÙÙ
ستÙÙØ§Øª Ø§ÙØ¹Ù
ÙÙØ© Ù
Ù Ø§ÙØ¨Ø±Ù
Ø¬ÙØ§Øª , ÙÙÙØ§Ù٠اÙÙ
Ø²ÙØ¯ Ù
٠اÙÙ
عÙÙÙ
ات Ø¹Ù Ø¬ÙØ§Ù
ع اÙÙÙ
اÙ
Ø© V8 ÙÙ ÙØ°Ø§ اÙÙ
ÙØ§Ù
A tour of V8: Garbage Collection
ØªÙØ´Ø± Ø§ÙØ¶Ø§ V8 blog Ù
ÙØ§Ùات ØÙÙ ØªÙØ¸ÙÙ
Ø§ÙØ°Ø§Ùرة Ù
٠آ٠اÙ٠أخر, Ø¨Ø·Ø¨ÙØ¹Ø© Ø§ÙØØ§Ù, ÙØªØ¹ÙÙ
جاÙ
ع اÙÙÙ
اÙ
Ø© ÙÙØ¶Ù ا٠تتÙÙØ£ ع٠طرÙ٠تعÙÙ
Ù
ÙÙÙØ§Øª V8 بشÙ٠عاÙ
Ù ÙØ±Ø§Ø¡Ø© Ù
دÙÙØ©
Vyacheslav Egorov Ù Ø§ÙØ°Ù عÙ
Ù ÙØ£ØØ¯ Ù
ÙÙØ¯Ø³Ù V8. Ø§Ø³ØªØ·ÙØ¹ ا٠أÙÙÙ V8 ØªØØ¯Ùدا ÙØ£ÙÙ Ø§ÙØ£Ùثر ØªØºØ·ÙØ© ع٠طرÙ٠اÙÙ
ÙØ§Ùات عÙÙ Ø§ÙØ§ÙØªØ±ÙØª.
٠باÙÙØ³Ø¨Ø© ÙÙÙ
ØØ±Ùات Ø§ÙØ£Ø®Ø±Ù, Ø§ÙØ¹Ø¯Ùد Ù
Ù Ø§ÙØ·Ø±Ù Ù
ØªØ´Ø§Ø¨ÙØ©, Ù ÙÙ٠جاÙ
ع اÙÙÙ
اÙ
Ø© ÙØ®ØªÙÙ ÙÙ ÙÙØ§Ø· Ø¹Ø¯ÙØ¯Ø©.
اÙÙ Ø¹Ø±ÙØ© اÙÙ ØªØ¹Ù ÙØ© ÙÙÙ ØØ±Ùات Ø¶Ø±ÙØ±ÙØ© ÙÙ ØÙÙ Ø§ÙØØ§Ø¬Ø© اÙÙ ØªØØ³ÙÙØ§Øª ذات ٠ستÙÙ Ù ØªØ·ÙØ±, ÙØ£Ù تخطط ÙÙ Ø¹Ø±ÙØªÙا بعد Ø§Ù ØªØµØ¨Ø Ø¹ÙÙ Ù Ø¹Ø±ÙØ© Ø¬ÙØ¯Ø© باÙÙØºØ© ÙÙÙ Ø¨Ø§ÙØªØ£ÙÙØ¯ Ø®Ø·ÙØ© ØÙÙÙ Ø©.

Ø§ÙØªØ¹ÙÙÙØ§Øª
<code>Ø ÙÙÙÙØ«Ùر Ù Ù Ø§ÙØ³Ø·Ùر استخدÙ<pre>Ø ÙÙØ£Ùثر Ù Ù 10 Ø³Ø·ÙØ± استخد٠(plnkr, JSBin, codepenâ¦)