在一款使用python+clutter的播放器中,使用一個自定義使用c語言的clutter的控件,來顯示一部影片的簡介,簡介中最多時,大概會顯示一百多張圖片.
現在有一個問題就是,這個控件有內存泄露的問題.
首先是,這個控件本身會內存泄露,開始時大概創建和銷燬一次此控件,虛擬內存會增加5m左右,後來,經過排查,主要是一些字符串資源沒有釋放的問題.
經過修改,現在降到了200-300k左右.基本可以接受.
在本機的測試中,使用二種方式來測試,一種是在c語言工程中來測試這個控件,另一種是在一個python工程來測試這個控件,兩種測試結果表示,每次創建和銷燬大概只會消耗200-300k,兩者結果比較一致.
但是,在目標機上實際運行卻發現,一旦加載此控件,然後顯示多張圖片,內存資源上升到最高值,但是,銷燬此控件時,內存消耗卻再也不會下降,而且再次創建此控件,內存也只會在這個最高值附近,也不會再繼續增加.
初步懷疑是由於python的內存池機制問題.