فهم Stack و Heap وتخزين البيانات في الذاكرة

x32x01
  • بواسطة x32x01 ||
💾 هنتكلم عن حاجة مهمة لكل مبرمج 🧑‍💻 وهي إزاي البيانات بتتخزن في RAM، ونعرف الفرق بين Stack و Heap

خلي بالك إن التقسيمة دي Logical واللي بيحددها هو Operating System 🖥️

الـ Stack و Primitive Data Types 📚

خلينا نبدأ بأبسط حاجة، الـVariable:
Java:
int age = 15 ;
  • النوع int ده Primitive Data Type يعني حجمه ثابت (في Java حجمه 4 بايت).
  • الـRAM هتخزن الـVariable ده في Stack لأنه حجمه ثابت ومحدد من الـCompile Time.
  • أي حاجه حجمها ثابت زي: int, float, double, boolean هتتخزن في الـStack.
  • كل Variable حجمه بيختلف حسب نوعه، بس كلهم بيتخزنوا في نفس القسم اللي اسمه Stack.

الـ Heap و Non-Primitive Data Types 🏗️

مثال دلوقتي على Object أو String:
Java:
String name = "ahmed" ;
* النوع String ده Non-Primitive يعني حجمه متغير.
* الـStack مينفعش يخزن الحاجات اللي حجمها متغير (بتتحسب أثناء Run Time).
* الحل: تخزين الـVariable ده في Heap، المكان ده حجمه متغير على حسب حجم البيانات.
* في نفس الوقت بيتخزن في الـStack مؤشر (Pointer) بيشاور على مكان الـVariable في الـHeap.

يعني ببساطة:
  • Stack: لتخزين الـPrimitive Data Types (int, float, boolean) + مؤشرات للـObjects في Heap.
  • Heap: لتخزين الـNon-Primitive Data Types (Objects, Strings, Arrays) بحجم متغير حسب البيانات.

الخلاصة 🔑

  • أي حاجة حجمها ثابت → Stack
  • أي حاجة حجمها متغير → Heap + مؤشر في Stack
  • فهم الـStack والHeap مهم جدًا لتحسين أداء برامجك وتفادي مشاكل الMemory 💡
 
التعديل الأخير:
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
470
x32x01
x32x01
x32x01
الردود
0
المشاهدات
193
x32x01
x32x01
x32x01
الردود
0
المشاهدات
388
x32x01
x32x01
x32x01
الردود
1
المشاهدات
513
x32x01
x32x01
x32x01
الردود
0
المشاهدات
721
x32x01
x32x01
x32x01
الردود
0
المشاهدات
944
x32x01
x32x01
x32x01
الردود
0
المشاهدات
632
x32x01
x32x01
x32x01
الردود
0
المشاهدات
72
x32x01
x32x01
x32x01
الردود
0
المشاهدات
527
x32x01
x32x01
x32x01
الردود
0
المشاهدات
475
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,828
المشاركات
2,026
أعضاء أكتب كود
468
أخر عضو
عبدالله احمد
عودة
أعلى