سؤال

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

الكود التالي سيظهر زيادة بحوالي 500 ميجابايت نعم أقصد ميجابايت من استخدام الذاكرة!

للتكرار، ضع الكود التالي في تطبيقك:

Dim CacheFactory1 As CacheFactory = New CacheFactory()
For i As Int32 = 1 To 1 * (10 ^ 4)
    CacheFactory1 = New CacheFactory()
    CacheFactory1 = Nothing
Next

لا يوجد سوى حلين لهذا.

  1. يقوم فريق Velocity بإصلاح الخلل (وأنا متأكد من أنهم سيفعلون ذلك)
  2. تحتاج إلى استخدام نفس كائن Cachefactory بطريقة ثابتة في تطبيقك والرجوع إليه في كل مرة تريد فيها استخدام ذاكرة التخزين المؤقت.(هذا يعمل ولكنه ليس الأمثل في رأيي.)

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

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

المحلول 2

لقد قمت بإنشاء موفر نطاق لحل هذه المشكلة.يمكنك الحصول على الرمز هنا.

http://www.codeplex.com/CacheScope

نصائح أخرى

فأين السؤال؟يجب عليك الإبلاغ عن الخطأ، وعدم نشره هنا، حيث من المرجح أن يقوم فريق Velocity بمراقبة Microsoft Connect بحثًا عن الأخطاء.

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