
- بواسطة x32x01 ||


خلي بالك إن التقسيمة دي 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" ;
* الـ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
التعديل الأخير: