فهم 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
المشاهدات
172
x32x01
x32x01
x32x01
الردود
0
المشاهدات
155
x32x01
x32x01
x32x01
الردود
0
المشاهدات
629
x32x01
x32x01
x32x01
الردود
0
المشاهدات
238
x32x01
x32x01
x32x01
الردود
0
المشاهدات
209
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
2,241
المشاركات
2,452
أعضاء أكتب كود
544
أخر عضو
ahmed5tyyuf.b@g
عودة
أعلى