Necesito refactorizar mi proyecto para hacerlo inmune a la excepción OutOfMemory
.Cómo simular excepción OutOfMemory
Hay enormes colecciones utilizadas en mi proyecto y cambiando un parámetro que puedo hacer que mi programa sea más precisa o utilizar menos de la memoria ...
OK, eso es el fondo. Lo que me gustaría hacer es ejecutar las rutinas en un bucle:
- Ejecute las subrutinas con el parámetro predeterminado.
- Capture la excepción
OutOfMemory
, cambie el parámetro e intente ejecutarlo nuevamente. - Haga el 2do punto hasta que los parámetros permitan ejecutar las subrutinas sin lanzar la excepción (por lo general, solo se necesitará un cambio).
Ahora, me gustaría probarlo. Sé que puedo lanzar la excepción OutOfMemory
por mi cuenta, pero me gustaría simular alguna situación real.
Así que la pregunta principal es:
¿Hay una manera de establecer algún tipo de límite de memoria para mi programa, después de llegar a la que el OutOfMemory
excepción será lanzado de forma automática?
Por ejemplo, me gustaría establecer un límite, digamos 400MB de memoria para todo mi programa para simular la situación cuando hay una cantidad de memoria disponible en el sistema.
¿Se puede hacer?
Bueno, incluso no necesito compararlo con la memoria del sistema, solo necesito saber cuánto MB de RAM usé mi programa. Necesito leer el doc para GC ... ¡gracias! – Gacek
ok ... bueno, ya que estabas buscando OutOfMemoryException, asumí que querías quedarte sin un punto para afinar el máximo rendimiento. Pero bueno, si los métodos de GC funcionan para ti, ¡genial! – Dave
Bueno, supongo que puedo usar los métodos de GC y arrojar la excepción por mi cuenta después de llegar a algún límite. Tal vez algún trabajador de fondo ... Necesito probar si funcionaría. – Gacek