JVM، أريدك أن "الأحشاء"

1. Daguai الترقية، لا فتح حول JVM

2. JVM التقسيم

3. برنامج مكافحة

4. جافا كومة الجهاز الظاهري

5. ذاكرة كومة جافا

6. المنطقة طريقة / Metaspace

7. رزمة طريقة الأم

8. كومة الذاكرة الخارجية

9. ملخص كامل

1. Daguai الترقية، لا فتح حول JVM

JVM، تقدم المبرمجين جافا، فإنه قطعا لا فتح حولها، ونحن لا يمكن تجاوز الموضوع.

كنت Daguai ترقية، والتحول متقدمة من الطريق، لا بد من مشروع لمواجهة مجموعة متنوعة من OOM الخط، GC وغيرها من القضايا، وهذه المرة على المهارات الأساسية JVM.

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

أقول شيئا آخر، لمقابلة مهندس جافا، JVM هو خاتم يجب أن يسأل، وبالتالي، إذا كانت المقابلة أو العمل الفعلي، لديك حاجة ماسة لتعزيز مهارات JVM الخاصة بها.

امتدت الحقيقة بعيدة بعض الشيء، وسرعان ما تنسحب فورا إلى السؤال!

2. JVM التقسيم

المنطقة JVM، إلى القطع التالية:

  • عداد البرنامج
  • VM كومة
  • كومة
  • حي طرق
  • مداخن طريقة الأم

المقبل سنقوم JVM ككائن حي، الجزء المذكور أعلاه أجهزتها المختلفة. سنكتب على كود جافا الخاصة حول كيفية تشغيل هذه الزاوية من قبل JVM، وJVM لتحليل هذه "الجهاز" هو كيفية دعم جافا البرمجية لدينا لتشغيل ما يصل.

3. برنامج مكافحة

لنفترض أن لدينا ما يلي من فئة، فمن أبسط فقط HelloWorld:

الطبقة العامة HelloWorld {

ساكنة العام باطلة الرئيسية (سلسلة وسائط) {

System.out.println ( "مرحبا أيها العالم")؛

}

}

الجزء الأول من التعليمات البرمجية أعلاه سيكون حاضرا في ". JAVA" ملف لاحقة، الملف هو ملفات التعليمات البرمجية المصدر جافا.

ولكن هذه الوثيقة للمبرمجين لدينا، الكمبيوتر لا يمكن قراءة هذا الرمز.

في هذا الوقت، لا بد من مترجم، يتم ترجمة ملف التعليمات البرمجية المصدر ". JAVA" التمديد ". الطبقة" ملف لاحقة رمز بايت.

بايت كود ملفات هذا ". الطبقة" لاحقة، المخزن هو لكتابة التعليمات البرمجية في رمز بايت المترجمة.

آلة حاسبة لغة بايت كود غير مفهومة، وليس مجموعة من التعليمات البرمجية التي نكتب بها. هذا رمز بايت نظرة شيء من هذا القبيل ما يلي:

مذكرة : هذه التعليمات البرمجية البايت التي ليست كلها مشرقة الطبقة HelloWorld إلى الكتابة، هو إعطاء بعض الأمثلة، وليعلم الجميع ". JAVA" تترجم إلى ". الطبقة" هو على الارجح ما كان عليه.

شرح ربما لكم، مثل الرقم "0: aload_0" هذا هو "تعليمات بايت كود"، كما يتوافق مع قسم من تعليمات الجهاز، الكمبيوتر قد قرأ فقط حول هذا رمز الجهاز التعليمات، يجب أن نعرف على وجه التحديد ما يجب القيام به.

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

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

حتى في تنفيذ تعليمات بايت كود، JVM في عمل عداد البرنامج هو شين؟

الجواب هو: لتسجيل كل التعليمات بايت كود تنفذ حاليا منصب موضوع، أي، في تسجيل الترابط الحالي الذي وتنفذ حاليا بايت كود التعليمات.

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

الشكل التالي تظهر بشكل أكثر وضوحا العلاقة بينهما.

4. جافا كومة الجهاز الظاهري

حسنا، ثم ننظر. ونحن نعلم جميعا أنه عندما يتم تنفيذ التعليمات البرمجية جافا، فإنه يجب أن يكون موضوع تنفيذ التعليمات البرمجية للأسلوب. حتى معظم HelloWorld الأساسي، وسوف يكون هناك موضوع الرئيسي لتنفيذ الأسلوب الرئيسي في التعليمات البرمجية.

في الأسلوب، في كثير من الأحيان تحديد المتغيرات المحلية في بعض الطريق، مثل هذا، الذي يحدد متغير "اسم" المحلية في الأسلوب.

باطلا sayHello العام () {

اسم سلسلة = "مرحبا".

}

لذلك نحن JVM هذا "الجهاز" ولعب، يجب أن يكون هناك مساحة JVM هو انقاذ المتغيرات المحلية، الخ داخل كل طريقة من البيانات، وهذه المنطقة هي جافا كومة الجهاز الظاهري

لماذا هذا المجال؟ لأن كل موضوع لتنفيذ التعليمات البرمجية أساليب مختلفة، ضمن الأسلوب أيضا المكالمات متداخلة إلى أساليب أخرى، لذلك يجب أن يكون لكل موضوع الخاص جافا كومة الجهاز الظاهري لها .

إذا كان موضوع تنفيذ طريقة، فإنه سيتم استدعاء يخلق أسلوب المقابلة لهذه إطار مكدس

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

العودة إلى المثال أعلاه، على سبيل المثال، المكالمات موضوع مكتوبة فوق طريقة "sayHello"، فإنه سيتم إنشاء إطار مكدس هو "sayHello" الطريقة يوضع في موضوع خاص جافا الجهاز الظاهري كومة الداخل.

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

ثم يدعو إذا "sayHello" طريقة أخرى طرق "تحية"، مثل التعليمات البرمجية التالية:

ثم إعطاء "تحية" طريقة وخلق إطار مكدس، يوضع في موضوع من جافا كومة الجهاز الظاهري.

نفكر لماذا يحدث هذا؟ لأن طريقة sayHello بدأ لأداء طريقة تحية، والمتغيرات المحلية من الإطار كومة تحية الجدول طريقة هناك "تحية" متغير، وهو متغير تحية طريقة المحلي.

ويوضح الشكل التالي هذه العملية:

ثم إذا تم الانتهاء من "تحية" الأسلوب، فإنه سوف يضع "تحية" الطريقة تعطي المقابلة كومة إطار مكدس من المكدس الجهاز الظاهري جافا، ثم إذا تم الانتهاء من "sayHello" الأسلوب، فإنه سوف يضع أساليب "sayHello" برزت من المكدس في الجهاز الظاهري جافا.

هذه هي JVM في الجهاز الظاهري جافا مداخن دور هذا المكون.

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

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

5. ذاكرة كومة جافا

JVM، وهناك مجال حيوي آخر، يتم استخدام كومة جافا لتخزين جميع أنواع الأشياء أنشأنا في القانون، مثل التعليمات البرمجية التالية:

تعليم باطلة العامة (اسم سلسلة) {

طالب طالب = طالب جديد (اسم)؛

student.study ()؛

}

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

ثم المتغير كومة طريقة قائمة إطار محلي، وهذا النوع من إشارة "طالب" سيتم تخزين عنوان المتغيرات المحلية وجوه الطلاب. يمكنك التفكير في الجدول متغير محلي من "طالب"، مشيرا إلى كائنات جافا كومة الطلاب.

ويوضح الشكل التالي هذه العملية:

6. المنطقة طريقة / Metaspace

هذا الأسلوب هو في منطقة الإصدار السابق 1.8 JDK، وJVM نيابة عن المنطقة في فئة الطالب مماثلة وضعت أساسا من المعلومات الخاصة بهم، ومعلومات عن أنواع مختلفة من الاستخدام العادي، يتم وضعها في هذه المنطقة، ولكن أيضا سيكون هناك بعض الأشياء مماثلة على بركة ثابت من هذه المنطقة.

ولكن بعد JDK 1.8، تغيير اسم هذه المنطقة، ودعا "Metaspace"، فإنه يمكن اعتبار "فضاء بيانات فوقية" وهذا يعني، بالطبع، لا يزال تخزين أنواع مختلفة من المعلومات ذات الصلة لكتابة منطقتنا.

7. رزمة طريقة الأم

في كثير من API الأساسي في JDK، مثل المتعلقة IO، NIO ذات الصلة، شبكة المقبس ذات الصلة، إذا نظرنا إلى داخل الشفرة المصدرية منه، وسوف تجد الكثير من الأماكن ليست جافا البرمجية.

والعديد من الأماكن تذهب إلى أسلوب الأصلي للاتصال بعض الطرق داخل نظام التشغيل المحلي، ومن المرجح أن يتم استدعاؤها ج طريقة لغة، أو بعض المكتبات على مستوى منخفض، مثل مثل ما يلي:

العام شفرة التجزئة الباحث الأصلي ()؛

عندما يكون هذا استدعاء الأسلوب الأصلي، وسوف تكون هناك أساليب الأصلي المقابلة لكومة موضوع، وهو جافا كومة الجهاز الظاهري مع ما شابه ذلك، ولكن أيضا لتخزين المعلومات الجدول متغير محلي مجموعة متنوعة من أساليب الأصلي وما شابه ذلك.

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

8. كومة الذاكرة الخارجية

وهناك أيضا منطقة، وJVM لا ينتمون إليها، من قبل NIO allocateDirect هذا API، يمكننا تخصيص مساحة الذاكرة في كومة جافا الخارجي، والعمليات كومة ومرجع ذاكرة خارجية من قبل آلة جافا الافتراضية في DirectByteBuffer.

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

9. ملخص كامل

وأخيرا، هل ملخص قليلا:

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

سمعة جيدة للحرس، ولكن تم تخفيض درجة بسرعة إلى الأفلام السيئة، وهذا هو الجرجير ضرب وجه معظم يرحم

في النصف الأول من هذا العام، تم بكين سوق الأراضي بيع الأراضي السكنية 33 واستخدام الأراضي من المبيعات الإجمالية من 86865000000 يوان

السيليكون الحركة العرض Agylstor M.4 NVMe SSD النموذج

هونغ كونغ اللاسلكية فاب خمسة سيكون، لا ننسى هناك جديد فاب خمسة، وانت تعرف الماضيين عدد البقر

جزر المالديف - علامات استقبال الصين الصداقة ليلة

بان الذي لعبته ستة، وأعلى خمسة هي الجمال الحقيقي، إلا آخر واحد من السماء القبيح

كرت RT5261 عرض مضيفة: دعم SD اتفاق اكسبرس

"الاحتفال علاقات دبلوماسية الذكرى 45 من ماليزيا والصين وماليزيا اجتماع اللوحة الشهيرة" عقدت في كوالالمبور

"TFBOYS '' الأخبار '190616 شي يي فاحت نمط واحد ألف الصغرى بلوق كبيرة ليال المدى الفيلم على الطريق أشكر قبيل التشجيع خالص

"مكافحة المخدرات 2" من المتوقع أن تتجاوز المليار علامة، أندي لاو، الفيلم الجديد لا تزال لا يمكن الهروب من "بائسة" كلمة

فاحت 190616 شي يي ألف أسلوب الصغرى بلوق كبيرة ليال المدى الفيلم على الطريق أشكر تشجيع خالص

الذي يقول أفلام هونج كونج قد ماتت؟ مع هذه الأمور الخمسة لمشاهدة "مكافحة المخدرات 2" تريد أن تبدو جيدة هو في مأمن