هل هو سيء إلى تحميل العديد من مدارة بدون استخدام أي أنواع ؟

StackOverflow https://stackoverflow.com/questions/70098

سؤال

الخلفية:في الشركة ونحن نعمل على تطوير مجموعة من التطبيقات التي تستخدم نفس النواة dll.هذه dll تستخدم Spring.net's IoC-حاوية إلى سلك الأمور (السيارات الأسلاك).جميع التطبيقات تستخدم نفس الربيع تكوين ملف و هذا الملف التكوين يشير إلى العديد من الفئات في مختلف dll.ولكن ليس كل شيء يحتاج التطبيق وظيفة من كل dll.ولكن بسبب الطريقة IoC-حاويات يعمل كل dll يتم تحميلها عن Spring.net دراسة أنواع وتحقق ما واجهات تنفيذ وهلم جرا.

جوهر السؤال:أنا أفهم أنه من الأفضل أن مجرد تحميل dll كنت حقا استخدام.ولكن هل هو حقا سيئة بالنسبة استخدام الذاكرة فقط لتحميل تمكنت dll?أو هو أولا ثم استخدام الطبقات في dll و يتم الحصول على JIT رائد أن معظم الذاكرة المستخدمة ؟

هل كانت مفيدة؟

المحلول

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

نصائح أخرى

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

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

شيء أن تكون على علم على الرغم من مرة واحدة يمكنك تحميل الجمعية في مجال التطبيق لا يمكنك ثم يفرغ من هذا التطبيق المجال, ومع ذلك فمن الممكن لخلق ديناميكية التطبيق المجالات تحميل التجميعات في ذلك وتفريغ كل مجال التطبيق عندما كنت فعلت.

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

في أي حال يمكنك تقسيم ملفات التكوين الخاصة بك إلى أقسام مثلمن خلال وضع كل كائن تعاريف وحدة في ملف moduleA.التكوين جميع التعاريف من وحدة ب في ملف moduleB.التكوين و تحديد فقط تلك الوحدات للتطبيق الخاص بك معين أن هناك حاجة حقا.

hth, إريك

P. S.:كما أود أن أقترح عليك ما بعد الربيع .صافي الأسئلة ذات الصلة لدينا منتديات المجتمع - هو أكثر من المحتمل أن تحصل على الإجابة على الأسئلة الخاصة بك هناك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top