Fuite mémoire

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Fuite mémoire

Ludovic GOMEZ
Bonjour,

Sur mon application compilée avec gambas 3.4, j'observe une fuite mémoire : la mémoire occupée par gbr3 ne cesse d'augmenter jusqu'à prendre la totalité de la RAM disponible puis le swap jusqu'à saturation totale.
Comment est il possible de savoir ce qui passe afin d'optimiser mon code et d'éviter ce phénomène.

merci

Cordialement,
--
Ludo

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk
_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Fuite mémoire

Benoît Minisini
Le 09/10/2013 06:57, Ludovic GOMEZ a écrit :
> Bonjour,
>
> Sur mon application compilée avec gambas 3.4, j'observe une fuite mémoire : la mémoire occupée par gbr3 ne cesse d'augmenter jusqu'à prendre la totalité de la RAM disponible puis le swap jusqu'à saturation totale.
> Comment est il possible de savoir ce qui passe afin d'optimiser mon code et d'éviter ce phénomène.
>
> merci
>
> Cordialement,
>

Le problème est qu'il n'y a pas moyen de faire la différence entre une
fuite mémoire due à un bug dans votre programme d'une fuite mémoire due
à un bug dans Gambas.

Il faut d'abord analyser votre code. On suppose d'abord que le bug est
dans votre programme.

J'imagine qu'il y a forcément une boucle, et que vous allouez des objets
sans les libérer.

La première idée est de chercher un ou plusieurs suspects parmi les
classes que vous manipulez.

La propriété Classes["nom d'une classe"].Count vous retourne le nombre
d'instances de cette classe. Surveillez l'évolution du nombre
d'instances de chaque classeà chaque tour de boucle.

Si vous voulez surveiller l'ensemble des classes utilisées, vous pouvez
énumérer la classe Classes pour récupérer chaque classe.

Donc :

Dim hClass As Class

For Each hClass In Classes
   Print hClass.Name;": ";hClass.Count
Next

--
Benoît Minisini

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk
_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Fuite mémoire

Ludovic GOMEZ
Le 10-10-2013 22:43, Benoît Minisini a écrit :

> Le 09/10/2013 06:57, Ludovic GOMEZ a écrit :
>> Bonjour,
>>
>> Sur mon application compilée avec gambas 3.4, j'observe une fuite
>> mémoire : la mémoire occupée par gbr3 ne cesse d'augmenter jusqu'à
>> prendre la totalité de la RAM disponible puis le swap jusqu'à
>> saturation totale.
>> Comment est il possible de savoir ce qui passe afin d'optimiser mon
>> code et d'éviter ce phénomène.
>>
>> merci
>>
>> Cordialement,
>>
>
> Le problème est qu'il n'y a pas moyen de faire la différence entre une
> fuite mémoire due à un bug dans votre programme d'une fuite mémoire due
> à un bug dans Gambas.
>
> Il faut d'abord analyser votre code. On suppose d'abord que le bug est
> dans votre programme.
>
> J'imagine qu'il y a forcément une boucle, et que vous allouez des
> objets
> sans les libérer.
>
> La première idée est de chercher un ou plusieurs suspects parmi les
> classes que vous manipulez.
>
> La propriété Classes["nom d'une classe"].Count vous retourne le nombre
> d'instances de cette classe. Surveillez l'évolution du nombre
> d'instances de chaque classeà chaque tour de boucle.
>
> Si vous voulez surveiller l'ensemble des classes utilisées, vous pouvez
> énumérer la classe Classes pour récupérer chaque classe.
>
> Donc :
>
> Dim hClass As Class
>
> For Each hClass In Classes
>    Print hClass.Name;": ";hClass.Count
> Next

Bonjour,

après quelques heures de recherches, j'ai trouvé :

Pour afficher un jpg stocké sur un serveur http, je passais par
"httpclient", je mettais mon image dans /tmp puis je l'affichais dans
mon formulaire. En n'oubliant pas d'effacer le fichier juste après.
En utilisant un timer, je relançais cette partie toute les 30 secondes.

toute cette cuisine provoquai une fuite mémoire sur ma machine.

J'ai changé, je suis passé par une webview, et je fais un reload
régulièrement. Depuis, plus de problème constaté.

Merci

@+



------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135031&iu=/4140/ostg.clktrk
_______________________________________________
Gambas-user-fr mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gambas-user-fr
Loading...