علي متقدمة أسئلة المقابلة الروبوت: اندروز جمع الذاكرة نموذج القمامة هو كيفية تحقيقه؟

كيف هي آلية لجمع القمامة لتحقيق ذلك؟ في الواقع، مع بدء مفيدة جدا لفهم GC سيكون من نموذج الذاكرة JVM، ولكن هناك حاجة لمعرفة فقط، ويقول أكثر ولكن الخلط بين الأفق.

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

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

مع ملخص التخطيطي:

كومة (كومة الذاكرة): ذاكرة غير كومة تخزين كائنات جافا (غير كومة الذاكرة): فئة تحميل لتخزين المعلومات وغيرها من الفوقية البيانات الأخرى (): JVM نفسها كود المخزنة، الخ

نموذج الذاكرة كومة

منذ يتم التركيز على كومة الذاكرة، ونحن ننظر إلى نموذج الذاكرة الكومة.

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

انظر الاغماء، والحق، ومشاهدة بعض الأسئلة:

  • لماذا تقسيم الجيل الجديد وسنة؟
  • لماذا جيل جديد من منطقة عدن الفرعية ومنطقتين الناجي؟
  • لماذا نسبة من عدن واثنين من منطقة حي باق على قيد الحياة هو 8: 1: 1؟

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

تحديد الأجسام القابلة للاسترداد

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

1. خوارزمية حساب مرجع

إضافة إشارة إلى كائن في العداد، كلما إشارة إلى مكانها، يتم زيادة قيمة العداد قبل 1؛ عند الإشارة إلى الفشل، وانخفضت قيمة العداد قبل 1؛ لم تعد تستخدم 0 أي كائن عداد الوقت.

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

2. وسائل الأتصال تحليل خوارزمية (الجذر خوارزمية البحث)

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

كومة الظاهري آلة (كومة متغير محلي الجدول الإطار) الكائن المشار إليه. طريقة الكائن في المراجع خاصية ثابتة. الاعتراض حرفية منطقة الطرق المرجعية. كائن JNI مداخن طريقة الأم المراجع.

وقف العالم

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

خوارزمية جمع عدة القمامة

مع اثنين من أساس كبير من أعلاه، يمكننا أن نبدأ في GC. لذا فإن السؤال هو، يعرف مسبقا ما هو كائن القمامة، وكيفية استعادتها؟ حاليا هناك العديد من خوارزمية السائدة. PS: يمكننا تخمين أول آلة جافا الافتراضية (هنا يشير إلى الافتراضي نقطة ساخنة) يستخدم نوع من الخوارزمية، ...، كان الجواب الأجيال خوارزمية جمع، فإنه ليس من الواضح لماذا كومة أمام الجيل الجديد ولتقسيم القديمة العارضة. ولكن حتى خمنت، فإنه يعتمد أيضا على عدة خوارزمية أخرى، وإلا فإنك لا أقول إنني لم يخطر لك، وسوف نرى مباشرة فهم خوارزمية جمع الأجيال.

1. كافة الاجتياح خوارزمية (مارك الاجتياح)

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

2. نسخ الخوارزمية (نسخ)

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

3. الأقسام ترتيب خوارزمية (مارك الميثاق)

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

4. خوارزمية جمع الأجيال

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

الخوارزمية النسخ المتماثل: للبقاء الأجسام الصغيرة. إعادة تدوير الهدف متعددة تسمية ترتيب خوارزمية: مناسبة للكائنات الحية والهدف أقل إعادة التدوير

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

نقول غرامة نقطة:

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

في العمق فهم خوارزمية جمع الأجيال

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

لماذا لا احد ولكن اثنين من الفضاء الناجي؟

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

لماذا ذلك بكثير الفضاء والفضاء عدن الناجي ليسجل أقل قليلا؟

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

سير العمل عدن واثنين من الفضاء الفضاء الناجي

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

وهناك الآن يفترض أن الجيل الجديد عدن، الناجي A، B الناجي ثلاثة الفضاء والجيل القديم قديم الفضاء.

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

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

GC نوع الزناد

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

ويمثل GC على كومة تخصيص نقص الأجسام أثار: GC_FOR_MALLOC. GC_CONCURRENT: عندما تكون ذاكرة كومة من طلبنا تصل إلى مبلغ معين، أو يمكن أن تفهم على أنها بدوام كامل تقريبا، فإن النظام يؤدي تلقائيا تشغيل GC لتحرير الذاكرة. GC_EXPLICIT: التمثيل هو تطبيق المكالمات واجهة System.gc، VMRuntime.gc أو تلقي أثار GC عند إشارة SIGUSR1. GC_BEFORE_OOM: يمثل الجهود الأخيرة من OOM حتى كنت على استعداد لرمي استثناء أثار GC

ملخص

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

الخلفية يمكن أن يكون إلكتروني خاص "مقابلة المعلومات" الرد مقابلة حرية الوصول إلى المعلومات ذات الصلة -

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

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

دو بلاط موقد Suxian شيفنغ قرية: إصلاح سلسلة جانب العرض تمتد المساحيق

2019 الروبوت ملخص الأسئلة العليا مقابلة: AIDL باستخدام مبادئ من لغة جافا ل

قوان Xiaotong الشارع اطلاق النار ليلة، عقد بسهولة الأوروبية والأميركية على غرار، مرهف الساقين العمل الشاق

يجب المبرمجين نرى! كيف قبل 30 سنوات من التخطيط والتطوير الوظيفي، ونظرة على الاقتراح السن

-AMS ملخص مقابلة ما هو دور المعرفة في تحليل بسيط تحت شفرة المصدر الروبوت الروبوت

مقابلة لي لكرة القدم التعادل مدرب تشيلسي الثلاثاء، لا يزال غير معروف ما إذا كان الحظر

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

رضيع ترك مأساوي أمه، والكلاب الضالة من المجاري إنقاذ حياة! الذي كان ملفوفا أيضا في البلاستيك

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

حالة | بيتل البالغ من العمر 81 عاما نهاية الحياة، ولكن هل تعرف حقا؟

أغنية يان فاي متقلبة في الآونة الأخيرة! يوم حار ارتداء الأحذية مارتن مشاهدة "الخصر النمل" تمتص بارد اللباس العين

الجاف | بو مليون البط والبط، والمطاعم من الصعب للكشف عن مكان وجود حفرة