"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > التنقل في ذاكرة JVM: المفاهيم الأساسية لمقابلة Java الخاصة بك

التنقل في ذاكرة JVM: المفاهيم الأساسية لمقابلة Java الخاصة بك

تم النشر بتاريخ 2024-11-04
تصفح:352

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

أدوار JDK وJRE وJVM

قبل الغوص مباشرة في مساحات ذاكرة JVM، دعنا نستكشف بسرعة الاتصال بين Java Development Kit (JDK)، Java Runtime Environment (JRE)، وJava الجهاز الظاهري (JVM)، وحدد المكان الذي يناسبه JVM بالضبط ضمن هذا الإطار.

Navigating JVM Memory: Key Concepts for Your Java Interview

  • مجموعة تطوير جافا (JDK) هي مجموعة تطوير برامج كاملة تتضمن:

      جميع الأدوات اللازمة لتطوير جافا.
    • بيئة تشغيل جافا (JRE)، وهي ضرورية لتشغيل تطبيقات جافا.
  • تحتوي بيئة تشغيل جافا (JRE)

    على:

      آلة جافا الافتراضية (JVM)
    • ، وهو المكون الأساسي المسؤول عن تنفيذ Java bytecode. مكتبات الفئات: فئات مجمعة مسبقًا تساعد برنامجك على التشغيل دون الحاجة إلى البرمجة اليدوية لهذه الوظائف مثل String وMathetc.
  • في الجوهر

    :

    يعمل
      JVM
    • كمحرك التنفيذ الذي يقوم بتشغيل تطبيقات Java. يعمل
    • JDK
    • كمجموعة أدوات للمطورين لإنشاء تطبيقات Java.
  • مع هذا الفهم، يمكننا الآن تحويل انتباهنا إلى مناطق ذاكرة JVM، وتحديدًا
Stack وHeap وMetaSpace

، لمعرفة كيفية تنظيم الذاكرة أثناء تنفيذ تطبيقات Java. 1. كومة الذاكرة

ما يتم تخزينه في ذاكرة المكدس:

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

معلومات إضافية حول ذاكرة المكدس:

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

ما يتم تخزينه في ذاكرة الكومة:

  • الكائنات: يتم تخزين الكائنات فقط في ذاكرة الكومة. وهذا يشمل:
    • كائنات الفئة المعرفة من قبل المستخدم : المثيلات التي تم إنشاؤها من فئات محددة من قبل المستخدم.
    • كائنات الفئة المضمنة : مثيلات فئات Java المضمنة، بما في ذلك المصفوفات وفئات التجميع مثل ArrayList وHashMap وما إلى ذلك.
    • متغيرات المثيل: باعتبارها حقولًا غير ثابتة تنتمي إلى كائن، يتم تخزين متغيرات المثيل مع الكائن في الكومة.
    • تجمع السلسلة : منطقة خاصة في الكومة تخزن سلسلة حرفية. إذا تم إنشاء سلسلة حرفية، تقوم Java بفحص تجمع السلسلة أولاً؛ إذا كان موجودًا، فسيتم إرجاع المرجع إلى الكائن الموجود بدلاً من إنشاء كائن جديد.

معلومات إضافية حول ذاكرة الكومة:

  • تخصيص الذاكرة: يتم تخصيص الذاكرة عند إنشاء كائن وإلغاء تخصيصه بواسطة أداة تجميع البيانات المهملة عندما لا يكون من الممكن الوصول إلى الكائن.
  • مجموعة البيانات المهملة : يقوم جامع البيانات المهملة تلقائيًا بإدارة الذاكرة في الكومة عن طريق تحديد وإزالة الكائنات التي لم يعد من الممكن الوصول إليها أو الحاجة إليها.
  • الذاكرة المشتركة : تتم مشاركة ذاكرة الكومة بين جميع سلاسل العمليات، مما يسمح بالاتصال بين الخيوط . يمكن الوصول إلى الكائنات التي تم إنشاؤها بواسطة مؤشر ترابط واحد أو تعديلها أو الرجوع إليها بواسطة سلاسل رسائل أخرى. وهذا يستلزم استخدام تقنيات تعدد العمليات لإدارة الوصول إلى الكائنات المشتركة، وضمان اتساق البيانات وتجنب حالات السباق.
  • 3. منطقة الطريقة / ميتا سبيس

تُعرف منطقة الطريقة أيضًا باسم MetaSpace في Java 8 والإصدارات الأحدث.

ما يتم تخزينه في منطقة الطريقة / MetaSpace:

  • البيانات التعريفية للفصل : يتم تخزين المعلومات حول الفئات، مثل بنيتها (الحقول والأساليب والواجهات) والعلاقات مع الفئات الأخرى، في MetaSpace.
  • المتغيرات الثابتة: يتم تخزين الحقول الثابتة المعلنة في الفئات في MetaSpace، مما يجعلها في متناول جميع مثيلات تلك الفئة.
  • تجمع ثابت لوقت التشغيل : يحتوي هذا التجمع على القيم الحرفية والمراجع المستخدمة أثناء وقت التشغيل. بالنسبة للسلاسل الحرفية، يتم تخزين المراجع هنا (يتم تخزين القيم الفعلية في String Pool في الكومة)، بينما يتم تخزين القيم الحرفية الأخرى (مثل الرقمية والمنطقية) مباشرة كقيم.

معلومات إضافية حول منطقة الطريقة / MetaSpace:

  • الذاكرة المشتركة : تتم مشاركة منطقة الطريقة بين جميع سلاسل الرسائل، مما يعني وجود مثيل MetaSpace واحد فقط داخل JVM. وهذا يسمح بالإدارة الفعالة لمعلومات الفصل ويقلل من حمل الذاكرة.
  • المزامنة : يعالج JVM المزامنة عند الوصول إلى منطقة الطريقة لمنع التناقضات وضمان سلامة الخيط.
  • خاتمة

يعد فهم مجالات الذاكرة الثلاثة هذه أمرًا بالغ الأهمية لأي مطور Java. إنها تشكل الأساس لمفاهيم مهمة مثل

جمع البيانات المهملة

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

    أساسيات جافا
  • أساسيات مقابلة المصفوفة
  • تعليمات سعيدة!

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/arshisaxena26/navigating-jvm-memory-key-concepts-for-your-java-interview-2nc8?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3