我有一个gtk.treeview
管理自己的列表存储的自定义包装类。该类有自己的方法,可以清除列表存储的数据并用新数据覆盖它。出于测试内存消耗的目的,treeview 仅在 8 列中显示 50,000 行整数。
我注意到每次调用我的函数来更新列表存储数据似乎都会增加应用程序使用的内存,并且在清除数据后它永远不会恢复。
这是我的简单树视图实现:
class TreeViewPrototype(gtk.TreeView):
def __init__(self):
gtk.TreeView.__init__(self)
self.columns = [str, str, str, str, str, str, str, str]
# Initialize Treeview and TreeViewColumns here
# Setup columns
self.liststore = gtk.ListStore(*self.columns)
self.set_model(self.liststore)
def set_list_model(self):
self.liststore.clear()
self.liststore = gtk.ListStore(*self.columns)
# Populate liststore with dummy data
for i in range(50000):
row = []
for j in range(len(self.columns)):
row.append("%d[%d]"%(i,j))
self.liststore.append(row)
在我看来,每次调用 set_list_model 时,当我用新的列表存储覆盖时,它永远不会取消分配数据的内存。我究竟做错了什么?