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 :

Consommation mémoire au démarrage


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Par défaut Consommation mémoire au démarrage
    Bonjour,

    J'aimerais avoir votre avis sur la consommation mémoire de mon application au démarrage.
    Voici ce que je constate :
    La consommation mémoire monte fortement, au delà de la consommation après la phase de démarrage (sous windows 32bit + 30%, en 64bit au moins +200%), puis retombe dès l'exécution de la première fonction dans la sub Load de mon formulaire de démarrage.
    En 32 bit, cela ne se perçoit pas vraiment sur le temps de démarrage, mais en 64bit cela peut prendre plusieurs secondes avant d'apercevoir le formulaire de démarrage.

    Mon formulaire principal est constitué d'une arborescence d'onglets (tabcontrol imbriqués). Pour limiter le phénomène, j'ai réalisé des évolutions afin de ne charger au démarrage que le minimum d'onglet, le contenu des autres étant chargé lors de leur première sélection.
    L'augmentation de mémoire a été fortement réduite mais le phénomène est toujours présent, et reste génant sous windows 64bit.

    Qu'en pensez-vous ? Est ce un fonctionnement normal pour une application winform développé en vb.net ?

    Merci par avance pour vos remarques.

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    une appli .net même minimale prendra rapidement 20 ou 30Mo de ram
    après la consommation dépend du programme, surement pour le coté clr/gc/jit

    si tu parles de windows xp 64 bits, je ne considère pas que c'est un os de référence

    en 64 bits tous les pointeurs ont une taille 2x plus grande (passage de 4octets à 8octets, m'enfin ca ne fait pas 500Mo de plus !)

    au démarrage d'une appli, celle ci est compilée au fur et à mesure de l'utilisation, la compilation est peut etre plus lente en x64

    si la mémoire se stabilise à l'utilisation il n'y a pas à s'inquiéter, si elle monte sans fin il faut rechercher les fuites
    sinon qu'une appli prenne beaucoup de mémoire n'est pas forcément grave dès l'instant qu'elle en a réellement besoin, et que le pc est dimensionné pour quant à l'environnement qui cohabite
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Par défaut
    Merci pour ta réponse.
    Mes tests en 64bit se font sous windows 7

    Ce n'est pas tant la consommation mémoire qui me gène mais le temps de démarrage.
    Pour être concret, sous windows 7 après mon optimisation, la conso mémoire monte à 90mo, puis chute à 15mo à l'apparition du formulaire pour remonter à 45 et oscille entre 40 et 45 en fonction des traitements réalisés. Rien d'alarmant sur la dernière phase donc.
    Par contre, il faut 4 à 5s pour voir apparaître le formulaire.

    PS : avant mon optimisation le pic de mémoire montait à plus de 250mo et il fallait plus de 10s pour voir apparaître le formulaire

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    pourquoi nous parler de mémoire si c'est le temps de démarrage qui t’embête

    si tu fais 2 secondes de traitement au démarrage du 1er form, c'est normal qu'il mette 2 secondes à s'afficher :p
    plus sérieusement, que fais tu sur le sub new ou le form load du formulaire ? traitement sur base de données ? autre ?
    auquel cas voir si tu peux mettre ca sur un autre thread ...
    si tu fais des tas d'appels de méthodes, mais court en temps chacun et obligatoirement sur le thread principal, il y a ngen qui permet de compiler en natif un programme, ayant pour effet un démarrage plus rapide, mais par contre il faut exécuter ngen sur chaque pc après installation de l'appli et après chaque mise à jour aussi ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    plus sérieusement, que fais tu sur le sub new ou le form load du formulaire ? traitement sur base de données ? autre ?
    Jusqu'au form load de mon formulaire principal je ne fais rien, c'est à partir de là que je lance un formulaire de login pour faire patienter les utilisateurs le temps d'exécuter les traitements du démarrage dont effectivement des accès et mises à jour avec une base de données sqlite.
    C'est bien ce qui précède qui m'interpelle.

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    le form load est exécuté avant l'affichage donc c'est surement ca

    essaie de charger tes données sur un autre thread (vori backgroundworker par exemple)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Grosse consommation de mémoire au démarrage
    Par guenievre dans le forum Java ME
    Réponses: 7
    Dernier message: 10/10/2007, 11h36
  2. [C#] probleme de consommation mémoire
    Par xtream dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/06/2006, 13h16
  3. [TStringGrid] Consommation mémoire
    Par spender dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/03/2006, 21h48
  4. [Consommation mémoire] Quoi utiliser pour trouver?
    Par doudine dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 25/01/2006, 13h50
  5. Réponses: 4
    Dernier message: 09/11/2005, 13h32

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