[ad_1]
Informations sur le projet: C# WPF avec .NET Framework 4.7.2, j’ai également utilisé Material Design pour définir le thème Dark/Light pour TOUTE l’application
Système d’exploitation: Windows 10 x64 avec 8 Go de RAM
Codes : Fenêtre de facturation ↓
XAML : XAML
C# : CSHARP
Mon projet a une consommation de RAM très élevée, mais maintenant que mon projet est gros, dans ma MainWindow lorsque je veux charger une fenêtre, j’obtiens l’erreur suivante :
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.
Ce que j’ai essayé :
J’ai essayé de fournir toutes les données nécessaires pour vérifier cette erreur, c’est une erreur générale et personne ne peut commenter avec le code récapitulatif. Je ne m’attends pas à ce que quiconque lise le code en entier, mais quelqu’un peut donner une opinion ou un indice d’un simple coup d’œil.
Merci a tous
Mise à jour :
Je crée un petit WPF C# pour tester l’interface utilisateur car j’étais soupçonné de “Conception matérielle”
donc voilà :
Solution 1
C’est difficile de dire quelque chose avec moins d’informations… mais :
8 Go de RAM avec Win10, ce n’est pas beaucoup de mémoire car Windwos lui-même prend jusqu’à 5 Go pour lui-même.
Maintenant, cela dépend de votre application, de ce qui se passe avec le reste de la mémoire et si c’est suffisant…
Solution 2
Citation:Mémoire insuffisante pour continuer l’exécution du programme pour C# WPF
Vous nous avez à peine donné suffisamment d’informations pour des suppositions folles, mais suffisamment pour des solutions sensées.
La seule chose raisonnable à faire est d’essayer sur un PC de 12 Go ou 16 Go pour voir si le problème persiste.
W10 est gourmand en mémoire, et si vous le remplissez d’anti-malware, il peut être parfaitement normal que 8 Go suffisent pour W10, anti-malware et autres, mais il ne reste pas grand-chose pour les applications utilisateur.
Sinon, le problème est typique d’un code récursif non maîtrisé.
Sans mettre la main sur votre PC et faire des mesures pour comprendre ce qui consomme de la mémoire et comment cela se produit, il est impossible de vous aider. Ce type d’activité est généralement réservé aux professionnels et coûte cher en raison du temps passé.
Solution 3
Pour ajouter à ce que Ralf et Patrice ont dit… La seule façon pour le code que vous montrez de provoquer ce message d’erreur est si ce code
private void Window_Loaded(object sender, RoutedEventArgs e) { new HEAD_LST_FROOSH22().Show(); }
fait partie du HEAD_LST_FROOSH22
classe, ou le HEAD_LST_FROOSH22
class crée une instance de la classe actuelle et une récursivité illimitée est le résultat.
Laissez-moi essayer d’expliquer ce qu’est la « récursivité illimitée » : dans le monde réel, vous avez un travail à faire : préparer une tasse de thé. Mais pour préparer une tasse de thé, il faut faire bouillir de l’eau, et la personne à qui appartient la bouilloire ne vous la laissera prendre que lorsque vous lui donnerez… une tasse de thé.
Parce que vous avez besoin d’une bouilloire pour préparer une tasse de thé afin d’obtenir une bouilloire pour préparer une tasse de thé, vous ne pourrez jamais terminer la tâche.
En informatique, la même chose se produit : la méthode A s’appelle elle-même (récursion directe)
soit il appelle la méthode B qui appelle la méthode A (récursion indirecte). Parce que chaque fois que vous appelez une méthode, elle utilise de l’espace sur la pile d’application, vous épuisez très rapidement toute la pile et vous obtenez une erreur « mémoire insuffisante ». Les piles sont assez petites – seulement 1 Mo – il est donc très facile de dépasser ce chiffre.
Commencez donc par examiner “le code entier” et déterminez quelle est la relation entre les appels qui contiennent ce code et le HEAD_LST_FROOSH22
la classe est.
[ad_2]
コメント