Requette dans Thread et memory Leak

Le
Fredo
Bonsoir,

Dans un thread manuel (threadexecute, utilisation d'hyperfile) je fait
une requête sur un fichier afin de tester quelques enregistrements.


Boucle
Si hexecuteRequeteSQL(MaRequette,.) alors
hlitpremier(MaRequette)
Tantque pas hendehors()
// Traitement

hLitSuviant(Marquette)
Fin
HlibereRequette(MaRequette)
fin
ThreadPause(100)

si faux alors sortir

fin


Je me retrouve avec une augmentation constante de l'utilisation de
mémoire (executable ou mode test) de quelques dizainnes de ko jusqu'a la
fermeture de la fenêtre exécutant le thread.

Si vous avez des pistes pour résoudre cette fuite de mémoire.

Merci d'avance,

Fred.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fredo
Le #24052061
Le 09/12/2011 22:16, Fredo a écrit :
Bonsoir,

Dans un thread manuel (threadexecute, utilisation d'hyperfile) je fait
une requête sur un fichier afin de tester quelques enregistrements.


Boucle
Si hexecuteRequeteSQL(MaRequette,....) alors
hlitpremier(MaRequette)
Tantque pas hendehors()
// Traitement

hLitSuviant(Marquette)
Fin
HlibereRequette(MaRequette)
fin
ThreadPause(100)

si faux alors sortir

fin


Je me retrouve avec une augmentation constante de l'utilisation de
mémoire (executable ou mode test) de quelques dizainnes de ko jusqu'a la
fermeture de la fenêtre exécutant le thread.

Si vous avez des pistes pour résoudre cette fuite de mémoire.

Merci d'avance,

Fred.





Complément d'information, si je remplace la requette par un hfiltre,
hlitpremier, ... il n'y a plus de soucis.

Cela semble donc bien être lié à la requette.

Fred
tjfromparis
Le #24060091
tu peux essayer une syntaxe légèrement différente

Maproc (=> dans un thread)
boucle
Fonction_controle()
fin
Fin



Fonction_controle (avec copie de contexte non threadé)
Si hexecuteRequeteSQL(MaRequette,....) alors
hlitpremier(MaRequette)
Tantque pas hendehors()
// Traitement

hLitSuviant(Marquette)
Fin
HlibereRequette(MaRequette)
fin
si faux alors sortir
fin



On 10 déc, 08:56, Fredo
Le 09/12/2011 22:16, Fredo a écrit :









> Bonsoir,

> Dans un thread manuel (threadexecute, utilisation d'hyperfile) je fait
> une requête sur un fichier afin de tester quelques enregistrements.

> Boucle
> Si hexecuteRequeteSQL(MaRequette,....) alors
> hlitpremier(MaRequette)
> Tantque pas hendehors()
> // Traitement

> hLitSuviant(Marquette)
> Fin
> HlibereRequette(MaRequette)
> fin
> ThreadPause(100)

> si faux alors sortir

> fin

> Je me retrouve avec une augmentation constante de l'utilisation de
> mémoire (executable ou mode test) de quelques dizainnes de ko jusqu'a la
> fermeture de la fenêtre exécutant le thread.

> Si vous avez des pistes pour résoudre cette fuite de mémoire.

> Merci d'avance,

> Fred.

Complément d'information, si je remplace la requette par un hfiltre,
hlitpremier, ... il n'y a plus de soucis.

Cela semble donc bien être lié à la requette.

Fred
Fredo
Le #24060381
Salut,


Problème résolu ... et cela ne vient pas directement de la requête.

Pour aller vite car je ne me rappelais plus de la fonction SQL
équivalente du position de windev (instr) j'ai testé la position d'une
chaine en mettant :

"Where wl.position(MaVal,'TOTO')" au lieu de "Where instr(MaVal,'TOTO')"

et c'est le wl.position qui provoque le memory leak. J'ai modifié le
code et tout roule à nouveau et j'ai remonté l'info à PCSOFT.

Merci encore.

Fred

Le 12/12/2011 09:39, a écrit :
tu peux essayer une syntaxe légèrement différente

Maproc (=> dans un thread)
boucle
Fonction_controle()
fin
Fin



Fonction_controle (avec copie de contexte non threadé)
Si hexecuteRequeteSQL(MaRequette,....) alors
hlitpremier(MaRequette)
Tantque pas hendehors()
// Traitement

hLitSuviant(Marquette)
Fin
HlibereRequette(MaRequette)
fin
si faux alors sortir
fin



On 10 déc, 08:56, Fredo
Le 09/12/2011 22:16, Fredo a écrit :









Bonsoir,



Dans un thread manuel (threadexecute, utilisation d'hyperfile) je fait
une requête sur un fichier afin de tester quelques enregistrements.



Boucle
Si hexecuteRequeteSQL(MaRequette,....) alors
hlitpremier(MaRequette)
Tantque pas hendehors()
// Traitement



hLitSuviant(Marquette)
Fin
HlibereRequette(MaRequette)
fin
ThreadPause(100)



si faux alors sortir



fin



Je me retrouve avec une augmentation constante de l'utilisation de
mémoire (executable ou mode test) de quelques dizainnes de ko jusqu'a la
fermeture de la fenêtre exécutant le thread.



Si vous avez des pistes pour résoudre cette fuite de mémoire.



Merci d'avance,



Fred.



Complément d'information, si je remplace la requette par un hfiltre,
hlitpremier, ... il n'y a plus de soucis.

Cela semble donc bien être lié à la requette.

Fred



Publicité
Poster une réponse
Anonyme