begin process at 2010 02 10 03:22:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

Unload ne marche po :x


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Unload ne marche po :x

mardi 18 janvier 2005 à 01:47:38 | Unload ne marche po :x

Arkalis


Bonjour, j'aurais voulu poser une question concernant l'instruction Unload de VB6

l'instruction unload permet "théoriquement" de décharger une feuille de la mémoire, par celà, je comprend libérer de la mémoire système la mémoire utilisé par la feuille à laquelle on utilise cette instruction

Or quand on fait un Unload, la feuille est bien déchargée.... du programme, mais pas de la mémoire du système, un test très simple

Créez 2 feuilles VB, une feuille principale appelée frmMain
et une feuille secondaire appelée frmAudio, plaquez dans la frmAudio un contrôle multimédia bien lourd en ressources et un contrôle Command, dans ds le code de cette feuille mettez :

' MediaPlayer étant OCX et strFileName un nom de fichier audio
Private Sub Form_Load()
    Const strFileName as String = "Nom du fichier audio"
    MediaPlayer.Open strFileName
End Sub

Private Sub cmdExit_Click()
    Unload Me
End Sub


Dans la feuille principale frmMain, mettez 2 boutons, un bouton Test et un bouton Show avec ce code :

Private Sub cmdShow_Click()
    frmAudio.Show
End Sub

Private Sub cmdTest_Click()
    Dim i as Long
    Me.Cls
    For i = Forms.Count -1 to 0 Step -1
        Me.Print Forms(i).Name
    Next i
End Sub

Vala pour les codes, maintenant passons aux tests après compilation du code (je suis sous win 2000, donc je ne peux que constater par rapport à mon système....) en ouvrant mon gestionnaire de tache.

Dans mon cas, quand j'ouvre mon programme, il prend 2.4 Mo en Ram
Quand je click sur Show, il passe à 9.1 Mo en Ram pendant la lecture du fichier Audio
Quand je click sur Exit et bien.... la feuille est bien déchargée, mais malheuresement mon programme occupe toujours 9.1 Mo en Ram, et pour vérifier le déchargement, en cliquant sur le bouton Test, on verra qu'il n'y a qu'une seule feuille présente pour l'application.....

J'ai aussi testé de mettre dans l'événement Exit de la feuille frmAudio

    Set frmAudio = Nothing
    Unload Me

Vu sur le forum, mais que dalle...

Quelqu'un peut me dire comment réellement libérer la mémoire ? car dans ces cas la, cela sert strictement à rien dans nos programmes de travailler minutieusement le code en choisissant si on met Unload Me ou Me.Hide vu que l'application VB n'est pas foutu de libérer cette mémoire occupée de la Ram.

Merci
mardi 18 janvier 2005 à 04:32:04 | Re : Unload ne marche po :x

metalcoder

Membre Club
Réponse acceptée !
A moins que le probleme vienne de windows qui gere mal la mémoire, la preuve il existe des utilitaires qui permette de "optimiser" la ram. Essaye juste comme ca d'ouvrir un wav vide avant de faire la méthode nothing. Juste comme ca pour voir si le faite de remplacer un wav par un autre plus petit te permet de gagner de la place.

@+
Metalcoder
mardi 18 janvier 2005 à 09:21:28 | Re : Unload ne marche po :x

madbob

Réponse acceptée !
Windows a fait d'énorme progrés en la matière... Et tous les OS plantent  c'est juste plus ou moins facile à faire planter.

Statistiquement, un utilisateur, fait souvent les mêmes opérations. L'optimisation mémoire, c'est pas seulement passer l'éponge, c'est aussi prendre en compte le fait qu'il y statistiquement 80% de chance voir plus pour que l'utilisateur reface une opération similaire. Or les traitements d'instenciation de réservation de structure, d'initialisation par les constructeurs et j'en passe sont consommateur de ressources machines.

Les nouveaux OS prennent en compte cet aspect des choses : ce qui est vraiment important n'est pas nécessairement que la déssallocation "physique soit effective" tant que le programme qui utilise la ressource est actif. Ce qui est important c'est que toutes les structures soient correctement libérées à la fin de l'exécution du programme. et que la cohérence globale soit maintenue.

C'est comme ça que je comprend une petite partie de la stratégie des nouveau OS.

madbob
mardi 18 janvier 2005 à 09:54:02 | Re : Unload ne marche po :x

madbob

Il y a quand même une différence fondamentale entre un Hide et un show, elle n'est pas visible forcément visible en mémoire car l'espace occupé est déclaré (qu'il contienne ou non de la data).

Si tu fais un Hide les valeurs au moment du Hide sont connues et restent accessibles
Si tu fais un unload les valeurs ne sont plus accéssibles.

madbob
jeudi 20 janvier 2005 à 22:47:18 | Re : Unload ne marche po :x

Arkalis

Salut bah merci de vos réponses, je pense que finalement après quelques jours de cogitement que bah le problème ne vient pas de VB mais plutot du système d'exploitation qui ne libère pas la mémoire peut être pour prévoir une utilisation future de la feuille et éviter le déchargement, ou plutot que la feuille est bien déchargée mais que le gestionnaire de taches ne l'indique pas, mais je pense que si un autre programme a besoin de la mémoire windows va si nécessaire libérer cette mémoire de disponible, enfin je me comprend, et je ne me pose plus cette question, car je sais que dans tous les cas, je ne pourrais plus remettre mon réveil à - de 10 mo. une fois qu'une alarme a sonné. m'enfin le principal c'est qu'il me réveille ;)

et si ça interesse des personne, j'ai fait un petit réveil très très simple d'utilisation ne demandant pas trop de ressources (théoriquement) par le code avec juste une seule feuille présente pour gérer le systray en fond de tache, on peut configurer 3 reveils completement indépendant aussi bien sur la source sonore que sur le volume sonore, on peut désactiver 1 reveil en particulier et sélectionner indépendemment pour chaque réveil les jours ou on ne veut po qu'il s'active, le tout est sauvegardé dans un fichier de config pour restaurer les parametres donc dans mon cas, mon réveil démarre au démarrage du pc, donc j'ai plus rien à toucher.

voilou
vendredi 21 janvier 2005 à 11:16:45 | Re : Unload ne marche po :x

madbob

Salut Arkalis,

Tu as certainement tes propres raisons pour ne pas mettre le source de ton réveil en ligne, vu que tu déposes déjà... et je n'ai aucune observation à faire .

Mais, peut-être que ton source à besoin d'être optimisé, peut-être pas, c'est pas si énorme ça 10mo.

Si tu posais clairement la question dans l'intitulé du source que tu déposes, tu aurais sûrement des réponses positives, et des propositions pour aborderd'une façon peut-être différente certains aspects de ton programme, qui deviendrait alors moins gourmant.

En tout cas je m'interesserai à ce genre de problématique, et il y en a forcément d'autres dans ce cas.

madbob


Cette discussion est classée dans : feuille, click, mémoire, unload, frmaudio


Répondre à ce message

Sujets en rapport avec ce message

Unload Me [ par petchy ] bonjour à tousau lancement de mon prog,j'ai un Splash qui se déclenche,la tous va bien,mais au ça ne va pas c'est quand je click sur frm_search le spl click sur graphique [ par michx ] Mon problème est le suivant:Je voudrais, lorsque je clique sur un point de mon graphique (incorporé dans une feuille de calcul Excel 97), stocker dans Problème entre la combobox et le Unload [ par MiStErLu ] Description :Quand je clique sur mon Combobox ( evenement Click ) j'affiche a l'ecran un certain nombre de label ( je les affiche dans une boucle grac Problème de pour afficher une feuille en .NET [ par Reelaxman ] Bonjour!je suis sous visual basic .NET, je veux afficher une feuille avec un evenement click donc: Private Sub cmdAbout_Click(ByVal sender As Syste Unload d'une feuille modale [ par musi1234 ] Bonjours a tous,j' execute une feuille avec la methode mafeuille.show 1,mafeuillemerelorsque que j'ai fini mon traitement dans mafeuilleje fais unload Probleme de Memoire [ par ayouni ] Salut,Je travaille sur un projet MDI comportant 100 feuilles (forms), j'ai eu un probleme de memoire et de plantage de mon ordinateur à type "d'espace Form (Load / Unload) [ par Marko007 ] Bonjour,avez-vous un conseil (ou du code) pour afficher une Form1 en dé-saffichant une autre Form2et vice-versa. MAIS ;o) Sinon c'est trop facile : L' Probleme lors de l'utilisation du Unload [ par Rjo37 ] Dans mon programme j'utilise la fonction Unload pour decharger une de mes feuilles.Et lorsque je recharge cette meme feuille je ne passe plus dans mo probleme pasage d'argument [ par sly535 ] bonjour à tous,je suis actuellement en train de faire la dure transition de VB6 à .NET avant dans vb6 je pouvais appeler une procedure qui rafraichiss Imprimer une feuille [ par Skarlix ] Salut,Je suis entrain de concevoir une application de création de perso pour un JDR, j'aimerais donc au fil imprimer les résultas sur une feuille de p


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales