希望有人可以帮助我,我没有想法!
我有一个密集的方法,可以创建一个对象并将其放入队列中。它看起来很像:
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异常。有更好的方法吗?