[ad_1]
Información del proyecto: C# WPF con .NET Framework 4.7.2, también utilicé Material Design para configurar el tema Oscuro/Claro para TODA la aplicación
SO: Windows 10 x64 con 8 GB de RAM
Códigos: Ventana Factura ↓
XAML: XAML
C# : CSHARP
Mi proyecto tiene un consumo de RAM muy alto, pero ahora que mi proyecto es grande, en mi ventana principal cuando quiero cargar una ventana, aparece el siguiente error:
private void Window_Loaded(object sender, RoutedEventArgs e) { new HEAD_LST_FROOSH22().Show(); }
Error: System.OutOfMemoryException: 'Insufficient memory to continue the execution of the program.
Lo que he probado:
Intenté proporcionar todos los datos necesarios para verificar este error, este es un error general y nadie puede comentar con el código de resumen. No espero que nadie lea el código completo, pero alguien puede dar una opinión o una pista con un vistazo.
gracias a todos
Actualizar :
Creo un pequeño C# WPF para probar la interfaz de usuario porque se sospechaba que hacía “Material Design”
asi que aqui esta :
Solución 1
Es difícil decir algo con tanta información… pero:
8 GB de RAM con Win10 no es mucha memoria porque el propio Windwos ocupa hasta 5 GB.
Ahora depende de tu Aplicación lo que pasa con el resto de la Memoria y si es suficiente…
Solución 2
Cita:Memoria insuficiente para continuar la ejecución del programa para C# WPF
Apenas nos dio suficiente información para hacer conjeturas descabelladas, pero sí suficiente para soluciones sensatas.
Lo único sensato es probar en un PC con 12GB o 16GB para ver si aún surgen problemas.
W10 consume mucha memoria, y para llenarlo con anti-malware, puede ser perfectamente normal que 8 GB sean suficientes para W10, anti-malware y otras cosas, pero no queda mucho para las aplicaciones de usuario.
De lo contrario, el problema es típico del código recursivo no dominado.
Sin poner las manos en tu PC y hacer mediciones para entender qué consume memoria y cómo lo hace, es imposible ayudar. Este tipo de actividad es generalmente para profesionales y es costosa por el tiempo invertido.
Solución 3
Para agregar a lo que Ralf y Patrice han dicho… La única forma en que el código que muestra podría causar ese mensaje de error es si este código
private void Window_Loaded(object sender, RoutedEventArgs e) { new HEAD_LST_FROOSH22().Show(); }
es parte del HEAD_LST_FROOSH22
clase, o el HEAD_LST_FROOSH22
class crea una instancia de la clase actual y el resultado es la recursividad ilimitada.
Permítanme intentar explicar qué es la “recursión ilimitada”: en el mundo real, tienes un trabajo que hacer: preparar una taza de té. Pero para hacer una taza de té, tienes que hervir agua, y la persona que posee la tetera sólo te la dejará tomar cuando le des… una taza de té.
Debido a que necesitas una tetera para preparar una taza de té para poder conseguir una tetera para preparar una taza de té, nunca podrás terminar la tarea.
En informática sucede lo mismo: el método A se llama a sí mismo (recursividad directa)
o llama al método B que llama al método A (recursión indirecta). Porque cada vez que llama a un método, este utiliza espacio en la pila de la aplicación, agota muy rápidamente toda la pila y obtiene un error de “memoria insuficiente”. Las pilas son bastante pequeñas (sólo 1 MB), por lo que es muy fácil superarlas.
Así que comience mirando el “código completo” y averigüe cuál es la relación entre las llamadas que contienen ese código y el HEAD_LST_FROOSH22
la clase es.
[ad_2]
コメント