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

Forcer le garbage collector: la syntaxe ?

6 réponses
Avatar
Jacquouille14
Bonjour,
J'ai besoin de forcer le garbage (classe GC) dans mon prog
d'affichage de photos. Je ne suis pas sur d'avoir la bonne syntaxe
malgré mes recherches sur msn.
Vista sp2, vb2008 express.
Un timer provoque l'affichage de photos, au bout de 26 photos j'ai
OutOfMemoryException. Jai vu que le garbage ne se fait pas.
Je voudrais forcer le garbage. J'essaie GC.collect() sans succés.
Quelque chose ressemblant à:
If GC.GetTotalMemory(False)<50000
GC.Collect()
End If
--
Jacques dit Jacquouille

6 réponses

Avatar
Patrice
Bonjour,

Il est possible que cela ne change rien. Le "out of memory error" indique
plutôt que qq chose n'est pas libéré correctement. Le garbage collector ne
supprime que ce qui n'est plus utilisé et une erreur "out of memory" indique
plutôt que la mémoire est toujours considérée comme utilisée.

Il faudrait vérifier que toutes les références à chaque photo sont bien
supprimées. A mon avis, il reste une référence à ces photos qq part qui
empêche leur bonne libération...


--
Patrice

"Jacquouille14" a écrit dans le message de groupe de
discussion : 4aa53351$0$22886$
Bonjour,
J'ai besoin de forcer le garbage (classe GC) dans mon prog
d'affichage de photos. Je ne suis pas sur d'avoir la bonne syntaxe
malgré mes recherches sur msn.
Vista sp2, vb2008 express.
Un timer provoque l'affichage de photos, au bout de 26 photos j'ai
OutOfMemoryException. Jai vu que le garbage ne se fait pas.
Je voudrais forcer le garbage. J'essaie GC.collect() sans succés.
Quelque chose ressemblant à:
If GC.GetTotalMemory(False)<50000
GC.Collect()
End If
--
Jacques dit Jacquouille



Avatar
Jacquouille14
Patrice a écrit :
Bonjour,

Il est possible que cela ne change rien. Le "out of memory error" indique
plutôt que qq chose n'est pas libéré correctement. Le garbage collector ne
supprime que ce qui n'est plus utilisé et une erreur "out of memory" indique
plutôt que la mémoire est toujours considérée comme utilisée.

Il faudrait vérifier que toutes les références à chaque photo sont bien
supprimées. A mon avis, il reste une référence à ces photos qq part qui
empêche leur bonne libération...



Bonjour,
C'est bien ce que je me dis sauf que le prog tourne sur un pc portable
sans problème.

--
Jacques dit Jacquouille
Avatar
Patrice
Avec la même RAM ? Le même OS (32 bit dans les deux cas ?) La même version
de Framework ? Ce n'est pas un fichier en particulier qui entraine le
plantage ?

A priori je dirais qu'une erreur "out of memory" ne peut pas être réglée via
un GC.Collect (car le problème est que la mémoire ne peut de toute façon pas
être libérée).

--
Patrice


"Jacquouille14" a écrit dans le message de groupe de
discussion : 4aa682ec$0$1542$
Patrice a écrit :
Bonjour,

Il est possible que cela ne change rien. Le "out of memory error" indique
plutôt que qq chose n'est pas libéré correctement. Le garbage collector
ne supprime que ce qui n'est plus utilisé et une erreur "out of memory"
indique plutôt que la mémoire est toujours considérée comme utilisée.

Il faudrait vérifier que toutes les références à chaque photo sont bien
supprimées. A mon avis, il reste une référence à ces photos qq part qui
empêche leur bonne libération...



Bonjour,
C'est bien ce que je me dis sauf que le prog tourne sur un pc portable
sans problème.

--
Jacques dit Jacquouille



Avatar
Jacquouille14
Patrice a écrit :
Avec la même RAM ? Le même OS (32 bit dans les deux cas ?) La même version
de Framework ? Ce n'est pas un fichier en particulier qui entraine le
plantage ?



Bonjour,
Si, cela est du aux images scannées en jpeg qui n'ont pourtant
pas un poids supérieur aux images de mon APN.
(j'ai trouvé hier soir en lançant le prog sur des images de
mon APN)
Le scanner doit mettre un tag erroné dans l'image ou une info
non reconnue ...
Je vais titiller mes images scannées avec the gimp.
Bonne soirée.
--
Jacques dit Jacquouille
Avatar
Gilles TOURREAU
Bonjour,

Lors du chargement des images via Image.FromFile(), l'exception
OutMemoryException indique que le format de l'image n'est pas correcte.
Vous n'avez en aucun cas besoin de lancer explicitement un GC.Collect(),
.NET le fera automatiquement si besoin est.

Cordialement

--
Gilles TOURREAU - MVP C#
E-Mail :
Site Web : http://gilles.tourreau.fr

Société P.O.S - Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr

"Jacquouille14" a écrit dans le message de groupe de
discussion : 4aa53351$0$22886$
Bonjour,
J'ai besoin de forcer le garbage (classe GC) dans mon prog
d'affichage de photos. Je ne suis pas sur d'avoir la bonne syntaxe
malgré mes recherches sur msn.
Vista sp2, vb2008 express.
Un timer provoque l'affichage de photos, au bout de 26 photos j'ai
OutOfMemoryException. Jai vu que le garbage ne se fait pas.
Je voudrais forcer le garbage. J'essaie GC.collect() sans succés.
Quelque chose ressemblant à:
If GC.GetTotalMemory(False)<50000
GC.Collect()
End If
--
Jacques dit Jacquouille


Avatar
Jacquouille14
Gilles TOURREAU a écrit :
Bonjour,

Lors du chargement des images via Image.FromFile(), l'exception
OutMemoryException indique que le format de l'image n'est pas correcte.
Vous n'avez en aucun cas besoin de lancer explicitement un GC.Collect(),
.NET le fera automatiquement si besoin est.

Cordialement



Bonjour,
Ma conclusion précedente est ainsi confirmée.
Je vais tenter de récupérer ces photos très anciennes.
Merci.

--
Jacques dit Jacquouille