Dentro de una aplicación compleja de subprocesos múltiples, estoy llegando a una excepción de memoria insuficiente, tal vez una vez a la semana. La aplicación está enviando/leyendo cantidades masivas de datos a través de varios sockets, donde los datos de lectura se almacenan en caché para evitar sobrepasos de búfer de la tarjeta de red.
¿Cuál es la mejor estrategia para analizar las excepciones de memoria? Durante el tiempo de ejecución normal, la aplicación se muestra con un tamaño de "Total de bytes en todos los montones" de hasta 1,5 Gigabytes en el Explorador de procesos.
Podría ser una estrategia para tener un hilo que es de sondeo ya seaC# Excepción de falta de memoria: estrategia de advertencia
GC.GetTotalMemory()
o
PrivateMemorySize64()
una vez segundo para saber cuándo comenzar a analizar cosas? Aún no he investigado los perfiles comerciales y estoy un poco preocupado por el impacto en el rendimiento de los mismos, lo que también podría dar resultados erróneos con respecto al análisis del problema real.
¿Cómo funciona el almacenamiento en caché? Buscaría una estrategia de asignación diferente para su almacenamiento en caché. – CodesInChaos
Para aclarar, ¿sabe qué causa la excepción de falta de memoria y solo está buscando una forma de configurar el almacenamiento en caché en su aplicación para que esto no suceda? ¿O es que no sabes exactamente qué lo causa y quieres depurar el problema? – svick