فهم 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
  • x32x01
الردود
0
المشاهدات
874
x32x01
x32x01
x32x01
الردود
0
المشاهدات
120
x32x01
x32x01
x32x01
الردود
0
المشاهدات
811
x32x01
x32x01
x32x01
الردود
0
المشاهدات
776
x32x01
x32x01
x32x01
الردود
0
المشاهدات
826
x32x01
x32x01
الوسوم : الوسوم
data structures heap memory java memory management objects pointers primitive data types programming fundamentals ram stack memory
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟

آخر المشاركات

إحصائيات المنتدى
المواضيع
2,370
المشاركات
2,583
أعضاء أكتب كود
572
أخر عضو
abdel
عودة
أعلى