使用GHC 7.4.2和GtkHs 0.12.4,在Win32和Win64上,該程序佔用的內存越來越多,在我的機器上消耗大約2Mb /秒。 我只是試圖使用Gtk製作動畫(這就是爲什麼我使窗口無效以便立即重繪)。爲什麼這個最小的Gtk2Hs程序泄漏內存
我試圖通過RTS選項分析內存使用情況,但是這個內存不可見。
這是怎麼回事?
import Graphics.UI.Gtk
main :: IO()
main = do
initGUI
window <- windowNew
onDestroy window mainQuit
onExpose window (\_ -> widgetQueueDraw window >> return True)
widgetShowAll window
mainGUI
- 編輯:我使用GTK的版本發現here這恰好是10年2月24日
- EDIT2:因此,在使用外部定時器而不是從揭露事件的修復要求widgetQueueDraw
的問題。它現在會做,但我不明白爲什麼。我已經用幾種語言和幾種GUI框架(在繪畫事件中使GUI控件失效)使用了這種方法。通常,調用invalidate只需設置一個標誌,在下一次GUI線程啓動時讀取標誌。它在GUI線程中每幀重新繪製控件,但實際上這是我想要的。它看起來像一個但在Gtk2Hs。
對於GHC 7.6.2,在Fedora x86_64上使用GTKhs 0.12.4和GTK + 1.2.10,使用-O2或者沒有顯式優化標誌,我不能重現這個bug。我確實看到沒有-O2的內存使用率稍高(但沒有增長)和CPU使用率極高。 – 2013-04-23 20:18:32
有趣 - 我會嘗試不同版本的GHC和Gtk – trethaller 2013-04-23 20:34:00
哦,我應該說我的GTK-2版本,而不是GTK +。 GTK-2版本是2.24.16。 – 2013-04-24 02:32:15