捕获OutOfMemory异常C#

时间:2016-08-10 01:42:55

标签: c# memory out-of-memory

希望有人可以帮助我,我没有想法!

我有一个密集的方法,可以创建一个对象并将其放入队列中。它看起来很像:

number

但是,有时private bool CheckingMethod(number) { long initialValue = System.Diagnostics.Process.GetCurrentProcess().PrivateMemorySize64; object o = new object(); queue.Enqueue(o) long difference = initialValue - System.Diagnostics.Process.GetCurrentProcess().PrivateMemorySize64; if(Microsoft.VisualBasic.Devices.ComputerInfo.TotalPhysicalMemory <= difference * number * number) { return true; } return false; } 的值非常大,因此根据可用的内存量,这有时会抛出OutOfMemory异常。

所以我一直想做的就是:

private void CallingMethod(number)
    {
     if(CheckingMethod(number)
      {
       LongMethod(number);
      }
    }

然后调用方法可以:

difference

我在运行longMethod之前尝试检查,是否会导致OOM异常。我的问题是public class FormContainer { @EJB private ExternalDao externalDao; // uses dependency Injection private final OrderForm orderForm; private final List<OrderFormContent> formContents; public FormContainer(OrderForm orderForm) { this.orderForm = orderForm initializeOrderForm(); } private void initializeOrderForm() { formContents = externalDao.getFormContents(orderForm); // similar for any other properties } // getters & setters } 会给我一个截然不同的值,所以我有时候还会遇到outOfMemory异常。有更好的方法吗?

0 个答案:

没有答案