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

VB.NET Discussion :

OutOfMemory lors chargement fichier dans Dictionary


Sujet :

VB.NET

  1. #1
    Membre actif Avatar de Cereal123
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2004
    Messages : 414
    Points : 214
    Points
    214
    Par défaut OutOfMemory lors chargement fichier dans Dictionary
    Bonjour,

    J'ai un gros fichier texte (12,1 millions de lignes) que je voudrais charger en mémoire pour le parcourir (il s'agit d'un fichier de trace d'une machine de production).

    J'ai fait le (bon?) choix de charger le fichier dans un Dictionary :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_Lignes As Dictionary(Of Int64, String)
    Au bout de la 11 998 950e ligne, j'ai une erreur "OutOfMemory".

    J'échoue vraiment très proche du but, et je n'arrive pas à m'en sortir. Pouvez-vous me donner une piste SVP ?
    Merci,

    C.

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Bonjour

    Quelle est la taille du fichier ?

    A quel besoin correspond ce chargement intégral dans un Dictionnary ?

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  3. #3
    Membre actif Avatar de Cereal123
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2004
    Messages : 414
    Points : 214
    Points
    214
    Par défaut
    Le fichier fait 310Mo.
    Je charge ce fichier car j'ai parfois besoin de parcourir plusieurs fois le même bloc de lignes pour effectuer différents traitements.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    essaye de faire plusieurs dictionary et diviser le remplissage
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Je n'ai rien contre le dictionnaire, mais si tu utilise la clé comme simple compteur de ligne, je suppose que tu peux aisement essayer un autre type de collection ?

    Il serait intéressant de savoir combien de RAM mange ton programme avant de planter (il parait que au dela de 1Go en .Net des problèmes peuvent arriver), de vérifier si ton pc n'a pas un disque plein ou une saturation de mémoire virtuelle.

    Sinon ça peut aussi provenir d'un bout de code dans une boucle ou fonction récursive demandant beaucoup de ressource (genre l'ouverture d'un stream ou d'une connection avec une DB à la place de la réaffectation d'un objet existant) qui ferrait fuiter et/ou exploser la mémoire par le garbage collector.

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Cereal123 Voir le message
    Le fichier fait 310Mo.
    Je charge ce fichier car j'ai parfois besoin de parcourir plusieurs fois le même bloc de lignes pour effectuer différents traitements.
    Pourquoi ne pas injecter ce fichier dans une table ? ce sera plus simple à traiter, non ?

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  7. #7
    Membre actif Avatar de Cereal123
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2004
    Messages : 414
    Points : 214
    Points
    214
    Par défaut
    Ce sera peut-être le plus simple.
    Je vais explorer cette piste. Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mysql: Chargement fichiers dans une table
    Par Malick dans le forum Requêtes
    Réponses: 6
    Dernier message: 10/07/2012, 23h19
  2. [AC-2010] Chargement fichier dans contrôle activeX topsolidviewer
    Par audloi dans le forum Access
    Réponses: 8
    Dernier message: 26/09/2011, 20h47
  3. Chargement fichier dans un curseur
    Par guil182 dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 29/07/2010, 16h42
  4. OutOfMemory lors de l'écriture dans un fichier
    Par Mischka dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 13/11/2007, 13h06
  5. [CONNECTION] Erreur lors du connect dans le fichier C
    Par Petey dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 19/04/2004, 18h13

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