OVH Cloud OVH Cloud

problème de mémoire

2 réponses
Avatar
Paul
Bonjour,

Je ne sais passi l'onappelle cela une "fuite m=E9moire", mais voici mon
probl=E8me : j'ai fais un script Perl qui semble utiliser beaucoup de m=E9
moire, je vous copie-colle le r=E9sultat de la commande "top"


PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4211 user1 16 0 436m 64m 5360 S 0.0 51.9 4:01.49 perl


pour info, dans mon script, je lance des Threads, mais jamais je ne lui
dis de lib=E9rer ces threads, il faut le faire ? ou alors l'interpreteur
perl le fait automatiquement ?

Donc, je ne sais pas vraiment comment optimiser mon script de fa=E7on =E0 ce
qu'il utilise moins de ressourecs.

voici mes questions :
- est-ce bien un probl=E8me de m=E9moire ?
- les threads sont ils probablement en cause ?
- si oui, comment faire pour lib=E9rer les threads ?


Je vous remercie de l'aide que vous pourrez m'apporter.

Paul.

2 réponses

Avatar
Delf

pour info, dans mon script, je lance des Threads, mais jamais je ne lui
dis de libérer ces threads, il faut le faire ? ou alors l'interpreteur
perl le fait automatiquement ?

Donc, je ne sais pas vraiment comment optimiser mon script de façon à ce
qu'il utilise moins de ressourecs.

voici mes questions :
- est-ce bien un problème de mémoire ?
- les threads sont ils probablement en cause ?
- si oui, comment faire pour libérer les threads ?


J'ai eu le meme problème apparemment:

MonThread->detach;

(Mes threads retournent *rien*)

--
Delf

Avatar
Stephane Zuckerman
Bonsoir,

On Sat, 27 Nov 2004, Delf wrote:

voici mes questions :
- est-ce bien un problème de mémoire ?
- les threads sont ils probablement en cause ?
- si oui, comment faire pour libérer les threads ?


J'ai eu le meme problème apparemment:

MonThread->detach;

(Mes threads retournent *rien*)


De ce que je vois, les threads en Perl sont POSIX. Donc le fait de faire
un detach() permet de les rendre indépendants du reste du programme (ce
qui a pour résultat d'effectivement laisser les threads se terminer tous
seuls). Sans faire le detach(), un thread qui se termine attend qu'un
thread ait fait un join() (je parle en termes de programmation C, il
faudrait vérifier la documentation spécifique à Perl. En C, les pages
concernées sont pthread_create(), pthread_detach(), pthread_join(), et
pthread_exit()).

Stéphane

--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)