Bonjour,
J'ai lu ça sur l'aide en ligne: http://help.adobe.co...5525e-8000.html
"There are two different ways of managing memory: the JavaScript runtime engine is garbage collected, whereas the Lingo runtime engine is not"
Donc pour le javascript engine c'est un garbage collector qui nettoie la ram... et pour lingo y'en a pas.
Donc comment ça marche en lingo ?
Mettons que je crée un énorme tableau qui contient plein de datas compliquées:
bigTable = [ [5646654654654,654654654,6546,65465465987987,654,....] , [#ref:objetcompliqué,#bla:bip...] , [liste de trucs... ]]
et qu'il n'y a pas d'autres références dans le programme qui pourraient référencer les données
si je fais
bigTable = void
a/ est-ce que les données qui sont dedans vont être automatiquement déallouées ?
b/ ou est-ce que mon gros tableau va rester bloqué dans la ram jusqu'à la fermeture du programme ?
si jamais c'est la réponse b/ la bonne, comment je fais pour nettoyer la ram ?
faut-il faire une espece de boucle récursive qui détruit une par une les props des sous-tableaux ?
Nos formations à venir :
[résolu] : déallouer la ram des données lingo
Débuté par papwal, août 18 2010 05:02
#1
Posté 18 août 2010 - 05:02
#2
Posté 18 août 2010 - 08:08
Salut !
[quote name='papwal' date='18 August 2010 - 07:02 AM' timestamp='1282107726' post='53604']
Donc pour le javascript engine c'est un garbage collector qui nettoie la ram... et pour lingo y'en a pas.
Donc comment ça marche en lingo ?
[/quote]
En fait oui, mais non
En javascript le ramasse miettes peut être appelé explicitement, alors qu'en Lingo il fait son boulot tout seul sans qu'on puisse explicitement l'appeler.
Le garbage collector Lingo est très classique et fonctionne sur le principe du compteur de référence (sans qu'on puisse explicitement définir des références faibles entre des instances, toutes les références créées sont fortes).
[quote]
Mettons que je crée un énorme tableau qui contient plein de datas compliquées:
bigTable = [ [5646654654654,654654654,6546,65465465987987,654,....] , [#ref:objetcompliqué,#bla:bip...] , [liste de trucs... ]]
et qu'il n'y a pas d'autres références dans le programme qui pourraient référencer les données
si je fais
bigTable = void
a/ est-ce que les données qui sont dedans vont être automatiquement déallouées ?
[quote]
oui, dès que le garbage collector sera appelé par la machine virtuelle Lingo, c'est à dire des qu'il aura du temps ou qu'il manquera de ressources et devra alors faire de la place. (formulé autrement, ca veut dire que tu es sur que ce sera nettoyé, mais tu ne peux pas savoir quand)
J'avais écrit un brouillon y'a quelques années sur le nettoyage de références circulaires, et comment tester rapidement la mémoire (car bon l'inspecteur de mémoire de Director est d'un intérêt disons limité !)
http://sebastien.portebois.free.fr/lingo/circularReference/lisezmoi.htm
C'est encore bourré de fautes, mais l'utilisation de gros buffer image pour surcharger la ram et plus facilement observer ce qui se passe,e t sur le nettoyage, ca reste d'actualité 7 ans plus tard
Bonne journée,
Séb
[quote name='papwal' date='18 August 2010 - 07:02 AM' timestamp='1282107726' post='53604']
Donc pour le javascript engine c'est un garbage collector qui nettoie la ram... et pour lingo y'en a pas.
Donc comment ça marche en lingo ?
[/quote]
En fait oui, mais non
En javascript le ramasse miettes peut être appelé explicitement, alors qu'en Lingo il fait son boulot tout seul sans qu'on puisse explicitement l'appeler.
Le garbage collector Lingo est très classique et fonctionne sur le principe du compteur de référence (sans qu'on puisse explicitement définir des références faibles entre des instances, toutes les références créées sont fortes).
[quote]
Mettons que je crée un énorme tableau qui contient plein de datas compliquées:
bigTable = [ [5646654654654,654654654,6546,65465465987987,654,....] , [#ref:objetcompliqué,#bla:bip...] , [liste de trucs... ]]
et qu'il n'y a pas d'autres références dans le programme qui pourraient référencer les données
si je fais
bigTable = void
a/ est-ce que les données qui sont dedans vont être automatiquement déallouées ?
[quote]
oui, dès que le garbage collector sera appelé par la machine virtuelle Lingo, c'est à dire des qu'il aura du temps ou qu'il manquera de ressources et devra alors faire de la place. (formulé autrement, ca veut dire que tu es sur que ce sera nettoyé, mais tu ne peux pas savoir quand)
J'avais écrit un brouillon y'a quelques années sur le nettoyage de références circulaires, et comment tester rapidement la mémoire (car bon l'inspecteur de mémoire de Director est d'un intérêt disons limité !)
http://sebastien.portebois.free.fr/lingo/circularReference/lisezmoi.htm
C'est encore bourré de fautes, mais l'utilisation de gros buffer image pour surcharger la ram et plus facilement observer ce qui se passe,e t sur le nettoyage, ca reste d'actualité 7 ans plus tard
Bonne journée,
Séb
#3
Posté 19 août 2010 - 10:14
merci seb
1 utilisateur(s) li(sen)t ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)









