IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 .NET Discussion :

System.OutOfMemoryException avec Linq


Sujet :

.NET

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2015
    Messages : 9
    Points : 8
    Points
    8
    Par défaut System.OutOfMemoryException avec Linq
    Voila j'ai une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public List<string> Mot1()
            {
                List<string> list = new List<string>();
                var alphabet = "abcdefghijklmnopqrstuvwxyz";
                var q = alphabet.Select(x => x.ToString());
                int size = 8;
                for (int i = 0; i < size - 1; i++)
                    q = q.SelectMany(x => alphabet, (x, y) => x + y);
     
                foreach (var item in q)
                   list.Add(item);
     
                return list;
            }
    Qui marche quand size est à 4 mais qui plante quand il est a 8. Pourquoi?
    Aussi, est il possible de mettre la variable q en static et de parcourir cette liste, un par un, par une méthode à part. Si oui, comment?

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Tu explose la mémoire disponible par l'application.

    Je suppose que ton application gérer l'ensemble des mots possibles.

    Taille 1 = 26
    Taile 2 = 262
    Taile 4 = 264 = 456976 mots de 4 caractères = 1 827 904 octets = 1785 Ko = 1,74 Mo
    Taile 8= 268 =208 827 064 576 mots de 8 caractères Soit 208 827 064 576*8 octets = 1 670 616 516 608 octets 1631461442 Ko = 1593224 Mo = 1 555 Go

    Pour rappel, Java utilise la mémoire vive. Donc, soit tu acheté un super-calculateur, soit tu change ton algo.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2015
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Je comprend maintenant
    Merci, je comprend mieux. C'est pour ça que ma machine chauffait

    Mais comment faire une méthode qui me les envoi un par un a chaque fois que je l’appelle. Je n'arrive pas, je ne suis pas forte en Linq.

    Cdt

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Ce que tu peux faire sans Linq :

    1. avoir un tableau des caractères de A à Z.

    2. Avoir un tableau d'entier pointant vers chaque lettre. Ce qui représente ton mot courant.

    3. A chaque fois que tu veux le mot "suivant", tu incrémente la premier position. Si celui-ci arrive à la taille de ton tableau de caractère, tu reset la valeur et tu incrément la valeur suivant dans ton tableau. Et ainsi de suite.

    Cela te fera boucler sur l'ensemble des possibilités.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

Discussions similaires

  1. Problème avec System.OutOfMemoryException
    Par Mario Rousson dans le forum VB.NET
    Réponses: 7
    Dernier message: 29/04/2012, 22h43
  2. [VC++] System TrayIcon avec QT
    Par yelbied dans le forum MFC
    Réponses: 4
    Dernier message: 29/11/2005, 10h46
  3. [Système]communiquer avec un processus externe sous windows
    Par tweety dans le forum Général Java
    Réponses: 4
    Dernier message: 14/11/2005, 17h17
  4. [systeme] - pb avec deux OS Win 98 et WIN XP
    Par rico_49 dans le forum Windows XP
    Réponses: 1
    Dernier message: 24/10/2005, 14h25
  5. Réponses: 13
    Dernier message: 20/06/2005, 14h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo