मैं पायथन (2.7) में मेमोरी लीक को ट्रैक करने का प्रयास कर रहा हूं। मुझे gc.get_referrers मिल गया है, लेकिन आउटपुट को समझ में नहीं आता है। dying_node
(जो एक सूची है कि मैं अपने शिकार के हिस्से के रूप में बना लिया है के लिए छोड़कर सभी संदर्भों से छुटकारा पाने चाहिए) को हटाने के बाद, मैं अपने कोड में है:gc.get_referrers को समझना
gc.collect()
print "done dying: ", getrefcount(dying_node) #note, includes the reference from getrefcount
referrers = gc.get_referrers(dying_node)
print "referrers: "
for referrer in referrers:
print referrer
जो उत्पादन पैदावार:
> done dying: 4
> referrers:
> [<__main__.Node instance at 0x104e53cb0>, <__main__.Node instance at 0x104e53b90>, <__main__.Node instance at 0x104e53b00>, <__main__.Node instance at 0x104e53d40>, <__main__.Node instance at 0x104e53ab8>, <__main__.Node instance at 0x104e53bd8>, <__main__.Node instance at 0x104e53a70>, <__main__.Node instance at 0x104e53c20>, <__main__.Node instance at 0x104e53c68>, <__main__.Node instance at 0x104e53b48>]
> [<__main__.Node instance at 0x104e53c20>, <__main__.Node instance at 0x104e53ab8>, <__main__.Node instance at 0x104e53c68>, <__main__.Node instance at 0x104e53a70>, <__main__.Node instance at 0x104e53cb0>, <__main__.Node instance at 0x104e53b00>, <__main__.Node instance at 0x104e53d40>, <__main__.Node instance at 0x104e53b90>, <__main__.Node instance at 0x104e53b48>, <__main__.Node instance at 0x104e53bd8>]
> <frame object at 0x104516300>
मुझे लगता है कि इसका मतलब है कि मेरे पास Node
एस की दो सूचियां हैं जो इस नोड और फ्रेम ऑब्जेक्ट को संदर्भित करती हैं। मुझे लगता है कि फ्रेम ऑब्जेक्ट नाम dying_node
है जिसे मैं देख रहा हूं। सूचियों में से एक एक सूची होगी जो मैंने अपने शिकार में मेरी मदद करने के लिए बनाई है। लेकिन क्या यह पता लगाने का कोई तरीका है कि दूसरी सूची क्या होगी?