تخصيص الذاكرة في Java: كل ما تحتاج إلى معرفته في عام 2022

نشرت: 2021-01-10

يشير تخصيص الذاكرة في جافا إلى العملية التي يتم فيها تخصيص برامج الكمبيوتر وخدماته لمساحات الذاكرة الافتراضية. تقوم Java Virtual Machine بتقسيم الذاكرة إلى Stack و Heap Memory. بالنسبة إلى Java Virtual Machine ، يمكن أن يتم تنفيذ تطبيق بأقصى إمكاناته من ذاكرة المكدس والذاكرة. في كل مرة يتم الإعلان عن متغير أو كائن جديد ، تخصص الذاكرة ذاكرة مخصصة لمثل هذه العمليات.

جدول المحتويات

ذاكرة المكدس

يتم استخدام تخصيص ذاكرة المخزون في جافا للذاكرة الثابتة وتنفيذ مؤشر الترابط. القيم الموجودة في هذه الذاكرة مؤقتة وتقتصر على طرق معينة حيث يتم الرجوع إليها باستمرار بطريقة Last-In-First-Out.

بمجرد استدعاء الذاكرة وإنشاء كتلة جديدة في ذاكرة المكدس ، تحتفظ ذاكرة المكدس بقيم ومراجع أولية حتى تستمر الطريقة. بعد نهايته ، يتم مسح الكتلة وإتاحتها لعملية جديدة. بشكل عام ، الحجم الإجمالي لذاكرة المكدس غير مهم بالنسبة لذاكرة الكومة.

تعلم كيفية إنشاء تطبيقات مثل Swiggy و Quora و IMDB والمزيد

خصائص ذاكرة المكدس

استنادًا إلى الأقسام المختلفة لتخصيص الذاكرة في Java Virtual Machine (JVM) ، إليك بعض الميزات المنفصلة لذاكرة المكدس:

  • يمكن أن تنمو ذاكرة المكدس أو تتقلص حيث يتم استدعاء أي طرق جديدة وإعادتها وفقًا لذلك.
  • يمكن تشغيل أي متغير في المكدس طالما أن نطاق الطريقة موجود.
  • يحصل على التخصيص التلقائي وإلغاء التخصيص عندما تخضع إحدى الطرق للتنفيذ.
  • في حالة الذاكرة الممتلئة ، يتم تشغيل java.lang.StackOverFlowError.
  • إنه أسرع في الوصول عند مقارنته بذاكرة الكومة.

قراءة: Full-Stack مقابل مهندس البرمجيات: أيهما تختار؟

الطرق المستخدمة في تخصيص ذاكرة المكدس في جافا

  • دفع الكائن (عنصر الكائن): هنا ، يتم دفع عنصر إلى أعلى المكدس.
  • انبثاق الكائن (): يتم مسح أي عنصر موجود في الجزء العلوي من المكدس وإعادته. في حالة شغور المكدس أثناء استدعاء pop () ، يحدث الاستثناء - EmptyStackException.
  • نظرة خاطفة على الكائن (): هنا ، يتم إرجاع العنصر العلوي ولكن لا يخضع لعملية التنظيف.
  • منطقية فارغة (): إذا لم يكن للحلقة أي قيمة عليا في مكدسها ، فإن الدالة ترجع 1 (صواب) ، وإلا 0 (خطأ).
  • في البحث (عنصر الكائن): يستخدم هذا لفهم ما إذا كان الكائن موجودًا في المكدس. في حالة العثور على القيمة ، تقوم الوظيفة بإرجاع موقع العنصر من أعلى المكدس ، وبخلاف ذلك تقوم بإرجاع -1.

قراءة: مشاريع جافا وموضوعات للمبتدئين

مساحة كومة جافا

تستخدم Java Heap Space بشكل أساسي بواسطة وقت تشغيل java ، حيث يتم تشغيلها في كل مرة يتم فيها إنشاء كائن وتخصيصه فيه. تحافظ الوظيفة المنفصلة ، مثل Garbage Collection ، على مسح الذاكرة المستخدمة بواسطة الكائنات السابقة التي لا تحتوي على مرجع. بالنسبة للكائن الذي تم إنشاؤه في Heap Space ، يمكن أن يكون لديك وصول مجاني عبر التطبيق.

يتم تقسيم تخصيص الذاكرة في جافا إلى أجزاء ، وهي الكومة ، والمكدس ، والرمز ، والثابت.

خصائص ذاكرة Java Heap

  • يمكن الوصول إليها من خلال تقنية إدارة الذاكرة المعقدة ، بما في ذلك الجيل الشاب ، والجيل القديم أو الثابت ، والجيل الدائم.
  • في ذاكرة الكومة ، عندما تمتلئ ، تقوم بإرجاع java.lang.OutOfMemoryError.
  • الوصول إلى هذه الذاكرة أبطأ نسبيًا من ذاكرة المكدس.
  • لا يخضع لإلغاء التخصيص التلقائي ويتطلب وظيفة مماثلة مثل Garbage Collector لإزالة الكائنات الغريبة حتى تعمل الذاكرة في مرحلتها المثلى.

مثال على تخصيص ذاكرة المكدس والكومة في جافا :

مصدر

مساحة الكومة وذاكرة المكدس: الاختلافات الأساسية

كومة ذاكرة الفضاء ذاكرة المكدس
تستدعي جميع أجزاء التطبيق ذاكرة الكومة. يقتصر تنفيذ ذاكرة المكدس على مؤشر ترابط واحد.
في أي وقت يتم إنشاء كائن ، يتم تخزينه في مساحة الكومة. تتكون ذاكرة المكدس فقط من المتغيرات المرجعية والمحلية البدائية.
يمكن الوصول إلى الكائنات هنا عالميًا عبر التطبيق. لا يمكن لمؤشرات الترابط الأخرى الوصول إلى كائنات ذاكرة المكدس.
هنا يتم تحديد الذاكرة حسب الأجيال الشابة والكبيرة. تحدث إدارة الذاكرة على أساس Last-In-First-Out.
تظل الذاكرة حسب نطاق التطبيق. الذاكرة مؤقتة.
يتم استخدام طرق مثل - XMX و XMS JVM لتحديد الحجم الأمثل لذاكرة الكومة. بالنسبة لذاكرة المكدس ، يتم تحديدها بطريقة -XSS.
هنا ، يحدث استثناء java.lang.OutOfMemoryError في حالة الذاكرة الممتلئة. هنا ، يحدث الخطأ java.lang.StackOverFlowError في حالة امتلاء الذاكرة.
الحجم أكبر ولكنه يستغرق وقتًا للمعالجة مقارنة بذاكرة المكدس. الحجم أقل ولكنه أسرع في التنفيذ من أجل تشغيل LIFO السلس.

اقرأ أيضًا: راتب Java Developer في الهند

تعلم دورات البرمجيات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.

خاتمة

يحدث تخصيص الذاكرة في جافا بطريقتين ، بشكل أساسي ، مساحة المكدس والكومة. نأمل أن تساعدك في فهم العملية برمتها.

إذا كنت مهتمًا بمعرفة المزيد حول تطوير البرامج كاملة المكدس ، فراجع برنامج upGrad & IIIT-B's Executive PG في تطوير البرامج الكامل المكدس المصمم للمهنيين العاملين ويقدم أكثر من 500 ساعة من التدريب الصارم ، 9+ مشاريع ، والمهام ، وحالة خريجي IIIT-B ، ومشاريع التخرج العملية العملية والمساعدة في العمل مع الشركات الكبرى.

كيف تتم إدارة الذاكرة في Java؟

Java Virtual Machine (JVM) هو برنامج كمبيوتر يستخدم لتشغيل البرامج المكتوبة بلغة برمجة Java. يجعل عملية استخدام إدارة الذاكرة فعالة. أيضًا ، تم تصميمه ليكون قويًا بحيث لا يتأثر البرنامج الذي يعمل على JVM حتى في حالة حدوث عطل في نظام التشغيل. تعني إدارة الذاكرة إدارة كل جزء من الذاكرة (RAM) في نظام الكمبيوتر. يراقب JVM تخصيص الذاكرة وإطلاقها عند الحاجة. بمجرد تحميل البرنامج في الذاكرة ، يخصص JVM مساحة ذاكرة له. هذه العملية تسمى الكومة. الكومة هي مساحة ذاكرة شائعة للعديد من أجزاء التطبيق.

ما هو جمع القمامة في جافا؟

يستخدم Java Virtual Machine (JVM) حساب المرجع لتتبع عدد كائنات Java. قبل أن يتم جمع أي كائن ، يجب أن يصل عدد المراجع إلى هذا الكائن إلى الصفر. يمكن لبرنامج المستخدم حذف الكائنات بشكل صريح عن طريق استدعاء طريقة finalize (). الصيغة النهائية هي طريقة ثابتة في فئة الكائن يتم استدعاؤها بواسطة Garbage Collector (GC). ستحرر طريقة الإنهاء جميع موارد الكائن قبل أن يتولى Garbage Collector هذا الكائن. جامع القمامة هو عملية تنظيف الأشياء غير المرغوب فيها. سيتم تشغيل عملية Garbage Collector عندما يكتشف نظام وقت تشغيل Java أن كومة Java ممتلئة تقريبًا. كل كائن لديه صورة نقطية في JVM. يتم تعيين الصورة النقطية لكل كائن لتتبع ما إذا كان قد تم استخدامه أم لا. عندما يتم تشغيل الصورة النقطية إلى 0 ، سيهتم GC بهذا الكائن.

ما هي مميزات لغة برمجة جافا؟

Java Programming Language هي لغة برمجة عالية المستوى للأغراض العامة تُستخدم لبناء التطبيقات والتطبيقات الصغيرة. يمكن تشغيل برنامج Java على أي نظام أساسي يدعم Java دون إعادة برمجته. ميزات لغة برمجة Java هي: ميزات موجهة للكائنات ، وقوية ، وأمان عالي ، ومستقلة عن النظام الأساسي ، وخالية من التكلفة ، وسهلة التعلم والاستخدام. Java هي لغة برمجة موجهة للكائنات وهي مستقلة عن النظام الأساسي ويمكن استخدامها أيضًا على أي نظام تشغيل أو نظام أساسي. Java هي لغة مجمعة ويتم إنتاج الرمز الثانوي الذي يتم تنفيذه بعد ذلك في Java Virtual Machine.