2
我有一個自定義的gtk.treeview
包裝類,它管理自己的liststore。這個類有它自己的方法來清除liststore的數據並用新數據覆蓋它。爲了測試內存消耗,樹視圖僅顯示8列中的50,000行整數。GtkTreeView樹存儲分配
我注意到,每次調用我的函數,用數據更新liststore似乎都會增加應用程序使用的內存,並且在數據清除後它永遠不會回落。
這是我簡單的TreeView實現:
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,當我覆蓋liststore用一個新的,它永遠不會釋放這些數據的存儲。我究竟做錯了什麼?
如何將列表存儲設置爲樹視圖的數據存儲? – XORcist 2012-02-16 20:14:08
@möter對不起,我無意中將它遺漏了。編輯來解決這個問題。 – Wes 2012-02-16 21:07:09
您似乎沒有將數據存儲重新設置到set_list_model中的新ListStore實例。 – XORcist 2012-02-16 21:35:52