تحميل الفصل
يشير تحميل الفئة إلى قراءة البيانات الثنائية من ملف .Class Class إلى الذاكرة ، ووضعه في منطقة طريقة منطقة وقت التشغيل ، ثم إنشاء كائن java.lang.class في منطقة الكومة لاستخدام تغليف بنية البيانات من الفصل في منطقة الطريقة.
كيفية تحميل ملفات .class:
1. التحميل مباشرة من النظام المحلي
2. قم بتنزيل ملف .class عبر الإنترنت
3. تحميل ملفات .class من Zip ، جرة ، إلخ.
4. استخراج ملفات. class من قاعدة بيانات الملكية
5. تجميع ملفات مصدر Java ديناميكيًا في ملفات .class
المنتج النهائي للتحميل الفئة هو كائن فئة موجود في منطقة الكومة.
يقوم كائن الفئة بتغليف بنية بيانات الفئة في منطقة الطريقة ويوفر لمبرمجي Java واجهة للوصول إلى بنية البيانات في منطقة الطريقة.
هناك نوعان من لوادر اللودر الفئة:
1. اللودر الذي يأتي مع Java Virtualizer
تحميل فئة الجذر (bootstrap)
محمل فئة التمديد (الامتداد)
تحميل فئة النظام أو تحميل التطبيق (النظام)
يتم تنفيذ اللواحين الأخيرين في Java ، ويتم كتابة محمل فئة الجذر في C ++ ، ولا يمكن للمبرمجين الحصول على هذه الفئة في كود Java.
2.
فئة فرعية من java.lang.classloader
يمكن للمستخدمين تخصيص طريقة التحميل للفئة
لا يحتاج محمل الفصل إلى الانتظار حتى يتم استخدام الفصل أولاً قبل تحميله.
تتيح مواصفات JVM لوادر الفئة التحميل المسبق لاستخدامها عند استخدامها. الإبلاغ عن خطأ (LinkageError). إذا لم يتم استخدام هذه الفئة بنشاط من قبل البرنامج ، فلن يبلغ برنامج Loader عن خطأ.
آلية إلغاء التثبيت
دورة حياة الفصل.
عندما لم يعد يتم الرجوع إلى كائن الفئة الذي يمثل فئة العينة ، أي أنه لا يمكن لمسه ، فإن كائن الفئة سينهي دورة الحياة ، وسيتم أيضًا تفريغ بيانات فئة العينة في منطقة الطريقة ، وبالتالي إنهاء الحياة دورة فئة العينة.
يمكن ملاحظة أنه عندما ينتهي الفصل الدراسي ، تعتمد دورة حياته على عندما ينهي كائن الفصل الذي يمثله دورة حياته.
مرجع العلاقة اللودر وكائنات الفئة:
في التنفيذ الداخلي لعملية تحميل الفئة ، يتم استخدام مجموعة Java لتخزين الإشارات إلى الفئة المحملة.
من ناحية أخرى ، يشير كائن فئة دائمًا إلى محمل فئة. استدعاء طريقة getClassLoader () لكائن الفئة للحصول على محمل فئة.
يمكن أن نرى أن هناك علاقة ثنائية الاتجاه بين مثيل الفصل والعملية المحمولة التي تقوم بتحميلها.
كائن الفئة ، كائن الفئة ، كائن مثيل الفئة:
يشير مثيل الفصل دائمًا إلى كائن الفصل الذي يمثل الفصل.
يتم تعريف طريقة getClass () في فئة الكائن ، والتي تُرجع مرجعًا إلى كائن الفئة الذي يمثل الفئة التي ينتمي إليها الكائن.
بالإضافة إلى ذلك ، تحتوي جميع فئات Java على فئة خاصية ثابتة تشير إلى كائن الفئة الذي يمثل هذه الفئة.
إلغاء تثبيت الفصل
لن يتم إلغاء تثبيت الفصول التي تم تحميلها بواسطة تحميل الفئة التي تأتي مع جهاز Java Virtual أثناء دورة حياة الجهاز الظاهري.
كما ذكرنا سابقًا ، تتضمن اللوادر الفئة التي تأتي مع أجهزة Java الظاهرية لوادر فئة الجذر ، ووادر فئة الامتداد ووادر فئة النظام.
يشير جهاز Java Virtual نفسه دائمًا إلى محملات الفئة هذه ، وتشير محملات الفئة هذه دائمًا إلى كائنات الفئة من الفئة التي يتم تحميلها ، لذلك يمكن الوصول إلى كائنات الفئة هذه دائمًا.
يمكن تفريغ الفئات التي تم تحميلها بواسطة لوادر الفئة المعرفة من قبل المستخدم.
أمثلة محددة
يطبق متغير Loader1 ومتغير OBJ بشكل غير مباشر كائن الفئة الذي يمثل فئة العينة ، بينما يشير متغير OBJCLASS بشكل مباشر.
إذا تم ضبط المتغيرات المرجعية الثلاثة على الجانب الأيسر من الصورة أعلاه على فارغة أثناء تشغيل البرنامج ، فإن كائن العينة ينهي دورة حياته ، وينهي كائن MyClassloader دورة حياته ، وينتهي كائن الفئة الذي يمثل فئة العينة دورة.
عندما يكون ذلك ضروريًا ، سيتم التحقق مما إذا كان هناك كائن فئة من فئة العينة. سيتم إنشاؤها في منطقة كومة الجهاز الظاهري Java.