عند ذكر الذاكرة في Java، سيفكر الكثير من الناس في JVM، كما سيتم إساءة فهم نموذج الذاكرة الذي تمت مناقشته في هذه المقالة على هذا النحو. في الواقع، هذه أيضًا نقطة اختبار من المرجح أن ترتكب أخطاء في المقابلة، وأعتقد أن اختصار نموذج الذاكرة هو jmm. سنشرح أدناه مفهوم نموذج ذاكرة Java وسنساعدك على تمييزه عن jvm.
1. المفهوم
يعد نموذج ذاكرة Java (ذاكرة Java الرئيسية، JMM للاختصار) مفهومًا تجريديًا وله العديد من أوجه التشابه مع نموذج ذاكرة الكمبيوتر. تتضمن JMM بشكل أساسي الخيوط والذاكرة العاملة والذاكرة الرئيسية للتفاعل. يمكن مقارنة الذاكرة العاملة بذاكرة التخزين المؤقت للحساب، لكن الذاكرة العاملة بين الخيوط مستقلة عن بعضها البعض، تشبه الذاكرة الرئيسية الذاكرة الرئيسية للكمبيوتر ويتم نقل القيمة المتغيرة بين الخيوط بشكل أساسي من خلال الذاكرة الرئيسية. في الوقت نفسه، لدى JMM أيضًا إعادة ترتيب التعليمات لتحسين ترتيب تنفيذ التعليمات البرمجية. ببساطة، الترتيب الذي يتم به كتابة الكود ليس بالضرورة هو الترتيب الذي يتم به تنفيذ الكود.
2. الفرق بين JMM وJVM
يشبه نموذج ذاكرة Java بنية ذاكرة Java (بنية ذاكرة JVM). يعتقد الكثير من الأشخاص خطأً أن الاثنين هما نفس الشيء، مما يؤدي غالبًا إلى إجابات غير صحيحة أثناء عملية المقابلة.
منطقة الكومة والطريقة في Java عبارة عن مناطق بيانات مشتركة بين سلاسل رسائل متعددة. بمعنى آخر، قد تكون مؤشرات الترابط المتعددة قادرة على العمل على نفس البيانات المخزنة في الكومة أو منطقة الطريقة. وهذا ما نسميه غالبًا "تتواصل سلاسل رسائل Java من خلال الذاكرة المشتركة".
تتم ترجمة نموذج ذاكرة Java من نموذج ذاكرة Java الإنجليزي (JMM). في الواقع، JMM غير موجود بشكل حقيقي مثل بنية ذاكرة JVM. إنه مجرد مفهوم مجرد. JSR-133: يوضح نموذج ذاكرة Java ومواصفات الخيط أن JMM مرتبط بمؤشرات ترابط متعددة، ويصف مجموعة من القواعد أو المواصفات أنه عندما يكتب مؤشر ترابط واحد لمتغير مشترك، فإنه يكون مرئيًا لمؤشر ترابط آخر .
لذلك، لتلخيص ذلك بإيجاز، تتواصل خيوط Java المتعددة من خلال الذاكرة المشتركة، وبسبب استخدام الذاكرة المشتركة للاتصال، ستكون هناك سلسلة من المشكلات مثل الرؤية والذرية والنظام وما إلى ذلك أثناء عملية الاتصال، وJMM إنه نموذج مبني على اتصالات متعددة الخيوط وسلسلة من الميزات المتعلقة به. تحدد JMM بعض مجموعات بناء الجملة، والتي يتم تعيينها للكلمات الأساسية مثل المتقلبة والمتزامنة في لغة Java.
ما ورد أعلاه هو مقدمة لنموذج الذاكرة في Java. تركز هذه المقالة على مشاركة النظرية الأساسية، ويمكنك التركيز على التمييز بين jmm وjvm، ويمكنك أن تكون أكثر وضوحًا بشأن هذين المفهومين عند الدراسة في المستقبل .