كيفية فخ OutofMoryException في .NET (Excel الوظيفة الإضافية)

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

  •  13-09-2019
  •  | 
  •  

سؤال

أنا أحصل على استثناء Outofmemory في بلدي .NET Addin. يستخدم Addin عدد كبير من الكائنات المدارة وغير المدارة. هل هناك طريقة لفخ هذا الاستثناء؟

تم التحديث: أعتقد أن أي تطبيق يمكن أن يحصل على استثناء OutofMemory إذا كانت تتم معالجة كمية كبيرة من البيانات التي يجب معالجتها وغير محررة بشكل دوري. لنفترض أن لدي طريقة تحلل بعض الهياكل في الذاكرة. أعطيها 300 هياكل، يتم تحميل كل منها في الذاكرة، وتحليلها ويكمل المعالجة. في هذه العملية، كان استخدام الذاكرة X. الآن إذا أعطيتها 3000 هياكل معالجتها، فسوف يقوم بتحليل تلك 3000 في الذاكرة وسوف تذهب استخدام الذاكرة إلى 10X.

محدث

ترى هذه المشكلة فقط في Excel 2007 وليس في Excel 2003 والتي أؤديها لماذا طلبت من موظفي MSDN أن ينظروا إليها.

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

المحلول

في .NET The OutofMemoryException رمي بواسطة وقت التشغيل عندما لا يمكن تخصيص الذاكرة المطلوبة للتطبيق الخاص بك. على هذا النحو، هناك الكثير من العمل الفعلي الذي يمكن القيام به للتعامل مع مثل هذا الاستثناء.

بدلا من اصطيادها يجب أن تمنعها من الحدوث في المقام الأول. تجاهل الاستثناء لن يجعل المشكلة تختفي.

نصائح أخرى

إذا حصلت على OutofMemoryException، فقد توفي برنامجك، توقف عن الوجود، مرت، إنه ليس أكثر وذهبنا للقاء صانعه.

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

يمكن أن يكون جامع القمامة يحصل لك. حاول تجمع دوريا جمع.

إذا لم يساعد ذلك، اقرأ هذا: http://www.simple-talk.com/dotnet/.net-frameworkwork/the-dangers-of-the-large-object-heap/

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