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 :

Liberer la mémoire rapidement


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 134
    Par défaut Liberer la mémoire rapidement
    Bonjour à tous,

    Je suis confronté à un problème pas facile à résoudre. Je développe une appli sur PDA et j'ai souvent des Out Of Memory qui apparaisse.

    La question, comment faire pour que la mémoire soit libérée instantanément au moment ou l'objet est détruit

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    gc.collect en théorie, mais y en a qui sont pas trop fans ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 134
    Par défaut
    j'ai essayé mais cela n'a pas l'air de trop marcher. J'ai essayer d'utiliser aussi

    GC.WaitingPendFinalize (je sais plus si c'est le nom correct)
    mais rien à faire

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    si gc.collect ne fait rien, je pense que tu as fait une fuite mémoire

    il faut aussi compiler en release sinon c'est normal que la ram ne redescende pas trop
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Salut,
    franchement ça dépend vraiment de ton code ; utilises-tu des ressources non managées, des stream, des images etc ? Si oui fait bien attention à appeler les Dispose(), à utiliser le mot-clé using etc.
    Sinon, essaie d'utiliser là où c'est possible des singleton, des références faibles ; si l'appli est un peu compliquée, fais des diagrammes d'activité pour cibler les comportements potentiellement trés créationnistes et optimise la durée de vie des objets selon leur utilisation.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 134
    Par défaut
    Je vais détailler un peu l'appli.

    Comme je l'ai jit dans mon premier post c'est une application PDA qui tourne sur Windows Mobile 6 avec le Compact Framework 2.0. Jusque là rien de bien exceptionnel.

    C'est une appli GPS (qui lui ne pose aucun problème). Une base SQL CE est derrière. on fait pas mal d'appel mais de ce côté tous les objet sont bien détruits.

    La grosse complication c'est que l'appli dessine beaucoup de bitmap.

    La grosse question que je me pose c'est est-ce que une taille maximum d'utilisation de la mémoire est attribué à l'appli (genre pour l'appli le système décide de lui attribuer 10 Mo de mémoire)

    Car dans le passé nous avons rencontré ce genre de problème et pour palier au problème nous avons fait un éxecutable à part. Et là plus aucun Out of Memory alors qu'on faisait la même sauf qu'on y avait mis dans un exe à part
    (le code n'est pa
    s de moi, je viens de reprendre le projet complet).

    J'amerai bien en savoir un peu plus sur "les diagrammes d'activité pour cibler les comportements potentiellement trés créationnistes et optimise la durée de vie des objets selon leur utilisation".

    Quelle différence y a t-il a utiliser les usings dans le code plutot qu'en en-tête de code.

    Quelle grosse différence y a t'il entre un code générer en release plutot qu'en debug?

    Et dernière chose qu'est-ce qu'in singleton.

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

Discussions similaires

  1. liberer la mémoire
    Par clod83 dans le forum Framework .NET
    Réponses: 1
    Dernier message: 03/01/2008, 15h56
  2. Comment liberer la mémoire vive svp ?
    Par arnofly dans le forum Windows Forms
    Réponses: 21
    Dernier message: 22/08/2007, 22h23
  3. [SparcV8] Faire des transferts mémoires rapides
    Par progfou dans le forum Autres architectures
    Réponses: 4
    Dernier message: 10/05/2006, 18h50
  4. liberation de mémoire
    Par firejocker dans le forum MFC
    Réponses: 2
    Dernier message: 30/01/2006, 18h28
  5. Objet et liberation de mémoire ...
    Par Mouss26 dans le forum Langage
    Réponses: 4
    Dernier message: 17/03/2003, 12h12

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