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 :

Prend de plus en plus de mémoire


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juillet 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 15
    Par défaut Prend de plus en plus de mémoire
    Bonjour, j'ai créé une appli avec deux programmes qui se surveillent mutuellement, notamment s'ils ne sont pas mis en pause, grace à ce code:
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Imports System.IO
    Public Class Form1
        Private WithEvents IP As InterProcess
        Private WithEvents IP2 As InterProcess
        Dim ancien As String = ""
        Dim eA As Double = 0
     
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            IP = New InterProcess("Form1")
            IP2 = New InterProcess("Form2")
            Timer1.Start()
            Timer2.Start()
            File.WriteAllText("result.txt", "Surveillance démarrée " & Date.Now & vbNewLine)
            File.WriteAllText("result2.txt", "Surveillance démarrée " & Date.Now & vbNewLine)
        End Sub
     
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
     
            Try
                If IP.Stream <> "" And IP.Stream = ancien Then
                    File.AppendAllText("result.txt", Date.Now.ToLongTimeString & " Non Connecté" & vbNewLine)
                    File.AppendAllText("result2.txt", Date.Now.ToLongTimeString & IP.Stream & " " & ancien & vbNewLine)
                ElseIf IP.Stream <> ancien Then
                    File.AppendAllText("result.txt", Date.Now.ToLongTimeString & " Connecté" & IP.Stream & " " & ancien & vbNewLine)
                End If
                ancien = IP.Stream
            Catch ex As Exception
            End Try
     
        End Sub
     
     
     
     
     
     
        Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
            IP2.Stream = eA
            If eA < 99 Then
                eA += 1
            Else
                eA = 0
            End If
     
     
        End Sub
    End Class
    Le problème est que les deux process prennent de plus en plus de mémoire vive au fur et à mesure qu'il marchent.
    Comment résoudre cela?
    Merci de votre patience à lire ce code.

  2. #2
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juillet 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 15
    Par défaut Précision
    Les deux applis ont IP et IP2 inversés pour que ça fonctionne

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Par défaut
    à tout hasard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If ancien IsNot Nothing Then ancien.Dispose
    ancien=IP.Stream
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juillet 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 15
    Par défaut Merci
    mais la méthode dispose ne fonctionne pas pour les string.
    quel était le but de cette manip?

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Par défaut
    ah oui pas fait gaffe, j'avais pas vu que ancien était un string ...

    quand une appli monte en mémoire ce n'est pas forcément dérangeant, le mécanisme de .net fait que quand windows a besoin de mémoire ou que le pc a rien à faire, la mémoire baisse
    si elle ne baisse jamais (= pas pendant une heure et que ca monte à 2Go de ram ^^) ca fini en général par un outofmemory, là il devient urgent d'intervenir car il s'agit d'une fuite mémoire

    une fuite mémoire c'est quand on a des variables qu'on ne déréférence jamais
    dans le cas ou la mémoire monte mais redescend de temps en temps quand même c'est qu'on a oublié quelques .dispose (voir mémoire managée / non managée)

    si je parle chinois, quelle est cette classe interprocess ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre averti
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juillet 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 15
    Par défaut désolé
    A priori j'ai réussi plus ou moins à stabiliser, mais j'aimerais bien savoir s'il y a quand même un oubli dans mon code ou une manière plus simple de procéder.
    Merci

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Windows Azure : plus simple, plus flexible, plus ouvert
    Par Gordon Fowler dans le forum Microsoft Azure
    Réponses: 2
    Dernier message: 08/06/2012, 21h44
  2. [BPW] [BP7] Problème d'allocation de plus de 64K de mémoire
    Par cafabien dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 01/07/2008, 16h27
  3. JAXB XML: Marchalling vers fichier plus rapide qu'en mémoire(DOM)? Pourquoi?
    Par clincks dans le forum Persistance des données
    Réponses: 2
    Dernier message: 12/07/2006, 07h48
  4. comment réserver 1 plus grande place en mémoire ?
    Par jack_hunt dans le forum MFC
    Réponses: 10
    Dernier message: 30/06/2005, 16h08

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