ملاحظات التعلم JVM: إدارة الذاكرة JVM ومفاهيم جمع القمامة JVM. يتكون بنية ذاكرة JVM من كومة ، مكدس ، مكدس الطريقة المحلية ، منطقة الطريقة وأجزاء أخرى. بالإضافة إلى ذلك ، تستخدم JVM آليات جمع القمامة المختلفة لعناوين التنزيل للجيل الجديد والجيل القديم على التوالي.
أولاً ، دعنا نلقي نظرة على بنية ذاكرة JVM ، والتي تتكون من كومة ، مكدس ، مكدس الطريقة المحلية ، منطقة الطريقة وأجزاء أخرى. يظهر مخطط الهيكل أدناه.
JVM التعلم ملاحظات JVM Memory Management وجمع JVM Garbage
بنية الذاكرة JVM
يتكون بنية ذاكرة JVM من كومة ، مكدس ، مكدس الطريقة المحلية ، منطقة الطريقة وأجزاء أخرى. مخطط الهيكل كما يلي:
1) كومة
يتم تخصيص ذاكرة جميع الكائنات التي تم إنشاؤها بواسطة New New في الكومة ، ويمكن التحكم في حجمها بواسطة -xmx و -xms. ينقسم الكومة إلى الجيل القديم والجيل القديم ، ويتم تقسيم العلم إلى مناطق عدن والناجين. أخيرًا ، يتألف الناجين من الفضاء والضرب. مخطط الهيكل كما يلي:
جيل جديد. يتم تخصيص كائنات جديدة الذاكرة من قبل الجيل الجديد. عندما يكون عدن غير كافٍ ، سيتم نقل الأشياء الباقية إلى الناجين. يمكن التحكم في حجم الجيل الجديد بواسطة -xmn ، أو -xx: يمكن استخدام Survivorratio للتحكم في نسبة Eden و Survivor. تستخدم لتخزين الأشياء التي نجت من مجموعات القمامة المتعددة في الجيل الجديد.
2) كومة
عندما ينفذ كل مؤشر ترابط كل طريقة ، سيتم تطبيقه للحصول على إطار مكدس في المكدس. يشتمل كل إطار مكدس على منطقة متغيرة محلية ومكدس معامل ، والذي يتم استخدامه لتخزين المتغيرات المؤقتة والمعلمات والنتائج المتوسطة خلال هذه الطريقة.
3) كومة الطريقة المحلية
تستخدم لدعم تنفيذ الأساليب الأصلية ، وتخزين حالة كل استدعاء طريقة أصلية
4) منطقة الطريقة
يخزن معلومات الفصل المراد تحميلها ، والمتغيرات الثابتة ، والثوابت النهائية ، والسمات ومعلومات الطريقة. يستخدم JVM الجينات الدائمة لتخزين المناطق ، ويمكن تحديد الحد الأدنى والحد الأقصى للقيم بواسطة -xx: permsize و -xx: maxpermsize. بعد تقديم بنية ذاكرة JVM ، دعنا نلقي نظرة على عنوان تنزيل آلية مجموعة JVM Garbage.
آلية جمع القمامة JVM
يعتمد JVM آليات تجميع القمامة المختلفة للأجيال الجديدة والقديمة على التوالي
الجيل الجديد من GC:
عادةً ما يكون لدى The Ceponymous وقت بقاء قصير ، لذلك يتم إعادة تدويره بناءً على خوارزمية النسخ. تتمثل خوارزمية النسخ المزعومة في مسح الكائنات الباقية ونسخها إلى مساحة جديدة غير مستخدمة تمامًا ، والتي تتوافق مع المعالم الكبرى ، والتي تتمثل في النسخ بين عدن و Fromspace أو Tospace. يستخدم الجيل الجديد مؤشر الخمول للتحكم في GC. يحافظ المؤشر على آخر كائن مخصص في الفاصل الزمني للجيل الجديد. عندما يكون هناك كائن جديد لتخصيص الذاكرة ، يتم استخدامه للتحقق مما إذا كانت المساحة كافية. إذا لم يكن ذلك كافيًا ، فسوف يؤدي إلى GC. عندما يتم تخصيص الكائنات بشكل مستمر ، ستنتقل الكائنات تدريجياً من عدن إلى الناجين ، وأخيراً إلى الجيل القديم.
استخدم javavisualVM لمشاهدته بوضوح ولاحظ أنه بعد أن يكون الجيل الجديد ممتلئًا ، سيتم نقل الكائن إلى الجيل القديم ، ثم مسحه ويستمر في التحميل. عندما يكون الجيل القديم ممتلئًا ، سيتم الإبلاغ عن استثناء OutofMemory ، كما هو مبين في الشكل أدناه:
من حيث آلية التنفيذ ، يوفر JVM GC التسلسلي (SerialGC) ، GC التدوير المتوازي (Parallelscavenge) و GC المتوازي (Parnew)
1) التسلسلي GC
يتم إجراء عملية المسح والنسخ بأكملها بطريقة واحدة الخيوط. إنه مناسب للتطبيقات ذات وحدة المعالجة المركزية واحدة ، ومساحة صغيرة في الجيل الجديد وليس متطلبات عالية جدًا لوقت الإيقاف المؤقت. إنها طريقة GC الافتراضية على مستوى العميل. يمكن إجباره على تحديده من خلال -xx:+useerialgc
2) إعادة تدوير موازية GC
يتم إجراء عملية المسح والتكرار بأكملها بطريقة متعددة الخيوط. إنها مناسبة لمجموعة CPU والتطبيقات مع متطلبات وقت توقف قصيرة. إنها طريقة GC المستخدمة بواسطة مستوى الخادم افتراضيًا. يمكن استخدامه لإجبار مواصفات -xx:+usteparalledgc ، واستخدام -xx: parallelgCthReads = 4 لتحديد عدد مؤشرات الترابط.
3) GC موازي
استخدم مع GC المتزامن من الجيل القديم
الجيل القديم GC:
تختلف عن الجيل الجديد ، والكائنات البقاء على قيد الحياة لفترة طويلة ومستقرة نسبيا. لذلك ، يتم استخدام خوارزمية علامة لإعادة التدوير. تعني العلامة المزعومة مسح الكائنات الباقية ، ثم إعادة تدوير الكائنات غير المميزة. بعد إعادة التدوير ، سيتم دمج أو تمييز المساحة الفارغة للتخصيص السهل في المرة القادمة. باختصار ، من الضروري تقليل فقدان الكفاءة الناجم عن تجزئة الذاكرة. من حيث آلية التنفيذ ، يوفر JVM GC التسلسلي (SerialMsc) ، GC المتوازي (الموازي) و GC (CMS) المتزامن. يجب أن تتم دراسة تفاصيل الخوارزمية المحددة.
يجب استخدام آليات GC أعلاه مجتمعة ، ويظهر الطريقة المحددة في الجدول التالي:
ما سبق هو جميع محتويات الفهم المتعمق لمبادئ عمل Java GC التي يجلبها لك المحرر. آمل أن يدعم الجميع wulin.com أكثر ~