Sollte es möglich sein, dass gc.get_referrers (obj) eine leere Liste für ein Objekt zurückgibt, das Objekt aber dennoch über eine schwache Referenz zugänglich ist?Python-Objekt hat keine Referrers, aber immer noch über eine Schwachstelle erreichbar?
Wenn ja, wie würde ich anfangen zu versuchen, die Ursache für dieses Objekt nicht Müll gesammelt zu identifizieren?
Edit: Ich bin mir nicht sicher, wie genau ein Codebeispiel in diesem Fall helfen würde - es gibt offensichtlich eine starke Referenz irgendwo, aber ich werde verdammt sein, wenn ich es finden kann. Ich hatte den Eindruck, dass alle starken Referenzen auf ein Objekt von get_referrers() identifiziert werden.
Bearbeiten: Gelöst. Ich habe die Variable mit einer starken Referenz gefunden - sie befand sich innerhalb der Spiel-Ereignisschleife, war aber keine Klassenvariable, also hat get_referrers sie nicht aufgenommen.
bitte einem einfachen Code Beispiel. Ansonsten ist nicht klar, was du meinst. Ist die schwache Referenz selbst zugänglich oder ist das referenzierte Objekt selbst über den weakref zugänglich? – yairchu
Wie haben Sie die Variable mit der Referenz gefunden? Ich versuche gerade ein solches Leck aufzuspüren, aber es ist intermittierend und gc.get_referrers kehrt zurück []. Gibt es eine Möglichkeit zu finden, wo der "lokale" Verweis auf das Objekt ist? – papercrane