Salut,
Je m'arrache les cheveux à essayer de comprendre pourquoi tkinter garde les références des fonctions.ou méthodes qui ont été liées aux event et surtout comment les supprimer de tk.
Récemment, je me suis aperçu que lorsque je redémarrais une partie ou en effectuais une autre dans mon jeu de bataille navale (exécution du script toujours en cours d'exécution), l'occupation mémoire grimpait d'environ 100ko à chaque nouvelle partie, ce qui est énorme pour une occupation mémoire d'environ 11mo à la base.
En regardant ce qu'il se passe dans le garbage collector, j'ai pu m'apercevoir que l'instance de l'objet devant être supprimé est toujours là, bon je pensais que j'avais fait une bourde quelque part vu que j'ai un registre qui enregistre et radie des objets, mais normalement pas celui-là, je me suis fourvoyé, et j'ai en fait mal analyser le gc, en fait les méthodes qui sont référencées et empêche la suppression de l"objet sont toutes liées aux méthodes passées aux bind() du widget tkinter et manifestement un unbind ne les déférence pas.
Et quand même pour bien vérifier que c'est bien ça qui en était la cause, j'ai commenté la partie de mon code contenant les bind et retesté, et là l'objet a bien été supprimé lors du del, et n'existe plus dans le gc.
Donc, je cherche une solution pour enlever toute références aux méthodes de mon objet de tkinter, je pensais naïvement qu'un unbind le faisait, mais non :/
Partager