0
在一個非常大的項目中,我正在尋找內存泄漏。在這裏我迄今取得的進展:Python(w/pyglet)內存泄漏
使用類櫃檯,
import gc
from collections import Counter
def count():
return Counter(type(o).__name__ for o in gc.get_objects())
我看到,每個渲染程序的通我收穫類型的字典和instancemethods:
Counter({'instancemethod': 9714, 'dict': 7274, ...
Counter({'instancemethod': 9716, 'dict': 7275, ...
Counter({'instancemethod': 9718, 'dict': 7276, ...
Counter({'instancemethod': 9720, 'dict': 7277, ...
然後我試圖找出額外的字典,沒有得到垃圾收集,與此:
def get_latest():
for e in gc.get_objects():
if type(e).__name__ == "dict":
latest = e
return latest
不幸的是,返回大部分是相同的(dict1是dict2),所以它不是列表中的最後一個。
任何指針如何找到泄漏將不勝感激。 使用python 2.7和邊緣pyglet。
此外,這隻影響遊戲的客戶端,而不是服務器。所以這可能是pyglet中的一個問題 - 即使如此我也想找到它。
編輯:這個問題是由我自己回答的,我的問題是使用pyglet的push_handlers方法每幀相對於一次。