Hay varias cosas que puedes probar.
Primero, haga un pase aproximado con el Monitor de rendimiento, integrado en Windows. Agregue un contador para Proceso -> bytes privados utilizados, y ajuste la escala en consecuencia para que pueda echar un rápido vistazo al uso de la memoria. En lugar de esperar durante la noche, podrá identificar una fuga un poco antes. Otro contador que puedes probar se encuentra en .NET Memory, pero como mi monitor de rendimiento no me deja agregar los contadores de .NET (¡ARGH!), No puedo decirte exactamente qué es la supresión.
¿Se le asigna memoria a través de un código no administrado en su función de cálculo? Si es así, ¿estás desechando la memoria correctamente? Cualquier código que escriba que asigne memoria de esta manera debe implementar IDisposable, y también debe llamar a Dispose() en estas clases para asegurarse de que se limpien.
¿Llamas recursivamente a tu función? Podrías asignar toneladas de memoria cada vez a través de tu función, y aunque no puedas volar la pila, estarás usando todo el montón.
¿Hay memoria de la que pueda deshacerse antes? Incluso si no está usando un código no administrado, aún puede marcar su código administrado para que el recolector de elementos no utilizados lo elimine antes y luego no termine en el montón de Gen2. Implementa IDisposable, y luego llama a Dispose() en las clases que ya no necesitas seguir.
¿Estás utilizando hilos? Podría asignar memoria a su hilo y si no maneja adecuadamente los errores llamando a EndInvoke, huérfana memoria de esta manera.
Si falla todo lo demás, intente con un generador de perfiles de memoria como ANTS5 de RedGate. Encontró otro error en mi código, donde estaba registrando un controlador de eventos, pero no anulando el registro. Como resultado, mi código colgaba de todos los bits y piezas relacionados con este evento, que lamentablemente también se colgaba de los bits de la memoria. :)
Espero que esto ayude. He pasado por todo esto recientemente y estos son los consejos más útiles que puedo encontrar en este momento.
¿Utiliza un perfilador de memoria? – dtb
¿Tiene alguna recomendación para una? – sooprise
¡Agrega más memoria! ;) – w69rdy