Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

garbage collector et procédure récursive

5 réponses
Avatar
Pierre Agluti
bonjour,
j'ai une subroutine qui est récursive et qui fonctionne finement. Hélas,
la récupération mémoire semble ne pas se faire malgré des undef car il
semble que la récupération mémoire se fait à la sortie de la subroutine
et comme la subroutine est récursive, cela se fait uniquement à la
sortie de la subroutine donc tout à la fin :-(
je me pose la question de savoir si en mettant des blocs encadrés par
des {}, la place mémoire sera restitué en sortie de bloc ou pas ?
ça m"arrangerait bien car actuellement, je bouffe plus de 1.1 Go de
mémoire et ça commence à faire beaucoup
merci de vos réponses

5 réponses

Avatar
damien guerin
Tu peux pas forcer le passage du gc : System.gc ();
??
Avatar
DoMinix
Tu peux pas forcer le passage du gc : System.gc ();
??

heuuuu , il a pas posté sur fr.comp.lang.java ?


--
dominix

Avatar
DoMinix
bonjour,
j'ai une subroutine qui est récursive et qui fonctionne finement. Hélas,
la récupération mémoire semble ne pas se faire malgré des undef car il
semble que la récupération mémoire se fait à la sortie de la subroutine
et comme la subroutine est récursive, cela se fait uniquement à la
sortie de la subroutine donc tout à la fin :-(
je me pose la question de savoir si en mettant des blocs encadrés par
des {}, la place mémoire sera restitué en sortie de bloc ou pas ?
ça m"arrangerait bien car actuellement, je bouffe plus de 1.1 Go de
mémoire et ça commence à faire beaucoup
merci de vos réponses


la mémoire est rendu a perl lorsque l'on sort d'un bloc, mais perl
ne la rend pas forcement au systeme. Un appel a la procedure dans
un eval() ou dans un fork sera plus efficace (selon ton OS), car
la memoire sera rendue au systeme lorsque le subprocess se terminera.

--
dominix

Avatar
damien guerin
oui, c'était une boulette, désolé !
Avatar
Emmanuel Florac
Le Mon, 27 Jun 2005 23:44:17 -1000, DoMinix a écrit :

Un appel a la procedure dans
un eval() ou dans un fork sera plus efficace (selon ton OS)


Ce sera peut-être plus efficace pour la mémoire, mais ce sera beaucoup
plus lent... Par contre rien n'empèche à priori de définir des blocs,
même réentrants, à chaque cycle la mémoire sera libérée. Cependant
la mémoire libérée ne sera pas nécessairement rendue au système
immédiatement, mais là c'est l'OS qui décide tout seul...

--
Quis, quid, ubi, quibus auxiliis, cur, quomodo, quando