هتكلم في البوست ده عن حاجه مهمه لازم اي حد بيدرس Java يكون عارفها وهي JGC او Java Garbage Collection وازاي ال Memory بتتقسم في جافا
😃.
- في جافا ال GC دي حاجه بتحصل لما يبقى في Object ملهوش Referance طيب يعني ايه
🤔 ؟!.
نجيب الموضوع من الاول ونتكلم جافا بتخزن البيانات ازاي ، جافا بتقسم ال Memory ل Stack و Heap يعني بالظبط ممكن نقول ان نص ال Memory بيبقى Stack والنص التاني Heap ، طيب ليه الكلام ده
😃؟
- عشان لما تعرف Object من Class اسم ال Object بيتخزن في ال Stack وبقيت ال Object بكل حاجه فيه بتتخزن في ال Heap.
وهنا بقى بيجي دور ال Garbage Collector وده اللي بيقوم بعمليه ال Garbage Collection ، ده بيفضل يدور في ال Heap على اي Object متعرف وملوش Referance يعني مش بستخدمه في ال Stack او مش بتستخدمه في البرنامج بتاعك ويمسحه عشان يوفر مساحه في ال Memory
😃.
وهنا بقى بيجي دور ال Garbage Collector وده اللي بيقوم بعمليه ال Garbage Collection ، ده بيفضل يدور في ال Heap على اي Object متعرف وملوش Referance يعني مش بستخدمه في ال Stack او مش بتستخدمه في البرنامج بتاعك ويمسحه عشان يوفر مساحه في ال Memory
- طيب هل كل ال Variable بتتخزن كده برضوا ؟
لأ ، ال Premative Datatype زي ال int و float و double وهكذه بتتخزن في ال Stack عشان هي مش Class ليها Reference.
- اما String ده Class عشان كده بيتخزن في ال Heap زي اي Class بتعمله.
لأ ، ال Premative Datatype زي ال int و float و double وهكذه بتتخزن في ال Stack عشان هي مش Class ليها Reference.
- اما String ده Class عشان كده بيتخزن في ال Heap زي اي Class بتعمله.
-----------------------------------------
طيب دلوقتي نراجع على كل اللي قولناه قبل ما نقول معلومه جديده
👌
😃...
1. جافا بتقسم ال Memory ل Stack و Heap ، ال Stack بيتخزن فيه ال Referance وال Heap بيتخزن فيه ال Object.
1. جافا بتقسم ال Memory ل Stack و Heap ، ال Stack بيتخزن فيه ال Referance وال Heap بيتخزن فيه ال Object.
2. في حاجه اسمها Garbage Collection ودي عمليه بتحصل في ال Java Virtual Machine معناه انها تمسح اي Object ملهوش Referance في ال Stack يعني خلاص مش هستخدمه في البرنامج.
3. ال String ده Class او بنسميه برضوا Referance Datatype بيتخزن برضوا في ال Heap وليه Reference في ال Stack.
دلوقتي بقا نتكلم عن ال String بس عشان هو حاله خاصه مختلفه شويه عن اي Class ، ال String بيتخزن في ال Heap بس في جزء لوحده اسمه String Pool ، نشرح مثال هيوضح اكتر
😃.
نفرض اني عملت "String language = "Java زي ما قولنا language هتتخزن في ال Stack وهتشاور على المكان اللي اتخزن فيه java في ال String Pool اللي هو برضوا جزء من ال Heap.
طيب لو عملت "String language2 = "java كده انا عرفت String تاني فيه نفس القيمه اللي هي java هنا بقا هو هيخزن ال language2 في ال Stack ويخليها تشاور على نفس مكان java اللي في String Pool مش هيعمل قيمه جديده
😃.
ده بيحصل عشان احنا بنستخدم Strings كتير في البرنامج وممكن يكون في كتير منها بنفس القيمه ، وده بيحصل مع String بس اي Class تاني بيتعمله جزء خاص بيه في ال Heap اما String زي ما قولنا هو ليه جزء خاص بيه اصلا اسمه String Pool.
