Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Julien Bakmezdjian [MS]
Bonjour,
En faisant buffer = Nothing, vous rendez la variable buffer "supprimable" par le Garbage Collector... Cela ne signifie pas que la mémoire sera libérée à cet instant précis. L'algorithme du GC est assez complexe, et il ne libérera la mémoire qu'au moment le plus opportun (besoin de mémoire pour un autre objet, processus libre...). La notion de Garbage Collector (ramasse-miettes en bon français) dispense le développeur de la gestion de la mémoire (allocation et libération), mais n'est pas déterministe : nous ne pouvons savoir à quel moment la mémoire sera réellement libérée.
Pour forcer la collection du GC, vous pouvez utiliser les lignes suivantes juste après le buffer = Nothing (ce n'est pas recommandé, mais bon...) :
J'ai le code suivant que j'ai adapté d'une source en vb6 qui est censé remplir la ram puis ensuite de vider buffer pour libérer tout cet espace.
x correspond au nombre de Mo que l'on veut libérer
Pour ce faire je dois détruire buffer cela marche j'ai vérifié en mode debug mais cela n'a aucun impact sur l'espace libre de la ram.
J'ai bien essayé de changer Erase Buffer par Buffer=nothing mais sans succès
Je précise que ce code fonctionne en vb6 !
Si quelqu'un avait une idée de la manière dont je pourrais détuire Buffer
Merci d'avance
Dim i As Short
Dim Buffer As Object
ReDim Buffer(x)
For i = 0 To x - 1
Buffer(i) = Strings.Space(1000000)
Application.DoEvents()
Me.Text = i
Next
Erase Buffer
Bonjour,
En faisant buffer = Nothing, vous rendez la variable buffer "supprimable"
par le Garbage Collector... Cela ne signifie pas que la mémoire sera libérée
à cet instant précis. L'algorithme du GC est assez complexe, et il ne
libérera la mémoire qu'au moment le plus opportun (besoin de mémoire pour un
autre objet, processus libre...).
La notion de Garbage Collector (ramasse-miettes en bon français) dispense le
développeur de la gestion de la mémoire (allocation et libération), mais
n'est pas déterministe : nous ne pouvons savoir à quel moment la mémoire
sera réellement libérée.
Pour forcer la collection du GC, vous pouvez utiliser les lignes suivantes
juste après le buffer = Nothing (ce n'est pas recommandé, mais bon...) :
En faisant buffer = Nothing, vous rendez la variable buffer "supprimable" par le Garbage Collector... Cela ne signifie pas que la mémoire sera libérée à cet instant précis. L'algorithme du GC est assez complexe, et il ne libérera la mémoire qu'au moment le plus opportun (besoin de mémoire pour un autre objet, processus libre...). La notion de Garbage Collector (ramasse-miettes en bon français) dispense le développeur de la gestion de la mémoire (allocation et libération), mais n'est pas déterministe : nous ne pouvons savoir à quel moment la mémoire sera réellement libérée.
Pour forcer la collection du GC, vous pouvez utiliser les lignes suivantes juste après le buffer = Nothing (ce n'est pas recommandé, mais bon...) :
J'ai le code suivant que j'ai adapté d'une source en vb6 qui est censé remplir la ram puis ensuite de vider buffer pour libérer tout cet espace.
x correspond au nombre de Mo que l'on veut libérer
Pour ce faire je dois détruire buffer cela marche j'ai vérifié en mode debug mais cela n'a aucun impact sur l'espace libre de la ram.
J'ai bien essayé de changer Erase Buffer par Buffer=nothing mais sans succès
Je précise que ce code fonctionne en vb6 !
Si quelqu'un avait une idée de la manière dont je pourrais détuire Buffer
Merci d'avance
Dim i As Short
Dim Buffer As Object
ReDim Buffer(x)
For i = 0 To x - 1
Buffer(i) = Strings.Space(1000000)
Application.DoEvents()
Me.Text = i
Next
Erase Buffer
Titeuf
Bonjour, Merci depuis le post de mon message j'avais pensé au garbage collector mais s'en vraiment y donner de l'importance. La effectivement ca marche beaucoup mieux avec le GB mais ce que je ne comprend pas c'est si je ne rend pas supprimable "buffer" le GB ne libère pas cette mémoire !
Sinon j'avais une autre question : à la place du GB je créer un thread et lorsque je provoque l'arret de celui est-ce qu'il libère la mémoire utilisé pas "buffer" ??
Merci d'avance
"Julien Bakmezdjian [MS]" a écrit dans le message de news: uPpfwX$
Bonjour,
En faisant buffer = Nothing, vous rendez la variable buffer "supprimable" par le Garbage Collector... Cela ne signifie pas que la mémoire sera libérée à cet instant précis. L'algorithme du GC est assez complexe, et il ne libérera la mémoire qu'au moment le plus opportun (besoin de mémoire pour un autre objet, processus libre...). La notion de Garbage Collector (ramasse-miettes en bon français) dispense le développeur de la gestion de la mémoire (allocation et libération), mais n'est pas déterministe : nous ne pouvons savoir à quel moment la mémoire sera réellement libérée.
Pour forcer la collection du GC, vous pouvez utiliser les lignes suivantes juste après le buffer = Nothing (ce n'est pas recommandé, mais bon...) :
J'ai le code suivant que j'ai adapté d'une source en vb6 qui est censé remplir la ram puis ensuite de vider buffer pour libérer tout cet espace.
x correspond au nombre de Mo que l'on veut libérer
Pour ce faire je dois détruire buffer cela marche j'ai vérifié en mode debug mais cela n'a aucun impact sur l'espace libre de la ram.
J'ai bien essayé de changer Erase Buffer par Buffer=nothing mais sans succès
Je précise que ce code fonctionne en vb6 !
Si quelqu'un avait une idée de la manière dont je pourrais détuire Buffer
Merci d'avance
Dim i As Short
Dim Buffer As Object
ReDim Buffer(x)
For i = 0 To x - 1
Buffer(i) = Strings.Space(1000000)
Application.DoEvents()
Me.Text = i
Next
Erase Buffer
Bonjour,
Merci depuis le post de mon message j'avais pensé au garbage collector mais
s'en vraiment y donner de l'importance.
La effectivement ca marche beaucoup mieux avec le GB mais ce que je ne
comprend pas c'est si je ne rend pas supprimable "buffer" le GB ne libère
pas cette mémoire !
Sinon j'avais une autre question : à la place du GB je créer un thread et
lorsque je provoque l'arret de celui est-ce qu'il libère la mémoire utilisé
pas "buffer" ??
Merci d'avance
"Julien Bakmezdjian [MS]" <julienba@online.microsoft.com> a écrit dans le
message de news: uPpfwX$mFHA.3300@TK2MSFTNGP15.phx.gbl...
Bonjour,
En faisant buffer = Nothing, vous rendez la variable buffer "supprimable"
par le Garbage Collector... Cela ne signifie pas que la mémoire sera
libérée à cet instant précis. L'algorithme du GC est assez complexe, et il
ne libérera la mémoire qu'au moment le plus opportun (besoin de mémoire
pour un autre objet, processus libre...).
La notion de Garbage Collector (ramasse-miettes en bon français) dispense
le développeur de la gestion de la mémoire (allocation et libération),
mais n'est pas déterministe : nous ne pouvons savoir à quel moment la
mémoire sera réellement libérée.
Pour forcer la collection du GC, vous pouvez utiliser les lignes suivantes
juste après le buffer = Nothing (ce n'est pas recommandé, mais bon...) :
Bonjour, Merci depuis le post de mon message j'avais pensé au garbage collector mais s'en vraiment y donner de l'importance. La effectivement ca marche beaucoup mieux avec le GB mais ce que je ne comprend pas c'est si je ne rend pas supprimable "buffer" le GB ne libère pas cette mémoire !
Sinon j'avais une autre question : à la place du GB je créer un thread et lorsque je provoque l'arret de celui est-ce qu'il libère la mémoire utilisé pas "buffer" ??
Merci d'avance
"Julien Bakmezdjian [MS]" a écrit dans le message de news: uPpfwX$
Bonjour,
En faisant buffer = Nothing, vous rendez la variable buffer "supprimable" par le Garbage Collector... Cela ne signifie pas que la mémoire sera libérée à cet instant précis. L'algorithme du GC est assez complexe, et il ne libérera la mémoire qu'au moment le plus opportun (besoin de mémoire pour un autre objet, processus libre...). La notion de Garbage Collector (ramasse-miettes en bon français) dispense le développeur de la gestion de la mémoire (allocation et libération), mais n'est pas déterministe : nous ne pouvons savoir à quel moment la mémoire sera réellement libérée.
Pour forcer la collection du GC, vous pouvez utiliser les lignes suivantes juste après le buffer = Nothing (ce n'est pas recommandé, mais bon...) :