فهم 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
المشاهدات
352
x32x01
x32x01
x32x01
الردود
0
المشاهدات
456
x32x01
x32x01
x32x01
الردود
1
المشاهدات
494
x32x01
x32x01
x32x01
  • x32x01
الردود
0
المشاهدات
113
x32x01
x32x01
x32x01
الردود
0
المشاهدات
747
x32x01
x32x01
x32x01
الردود
0
المشاهدات
558
x32x01
x32x01
x32x01
الردود
0
المشاهدات
726
x32x01
x32x01
x32x01
الردود
0
المشاهدات
1K
x32x01
x32x01
x32x01
الردود
0
المشاهدات
779
x32x01
x32x01
x32x01
  • x32x01
الردود
0
المشاهدات
655
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,831
المشاركات
2,028
أعضاء أكتب كود
464
أخر عضو
رشن7
عودة
أعلى