Gtk.Window オブジェクトを作成して破棄するだけで、メモリ リークが発生するようです。
たとえば、次のコード例では、すぐに 1 GB を超えます (Linux システム モニターで示されるように、数秒後に VM と常駐メモリの両方が表示されます)。
for(int i = 0 ; i < 10485760; i++)
new Gtk.Window(Gtk.WindowType.Popup).Dispose();
この GTK FAQ ページでは、ref + sink gtk faq (1.5)を呼び出す必要性について言及しています。
しかし、私は両方を試しました
var window = new Gtk.Window(Gtk.WindowType.Popup).Ref().Sink();
window.Unref();
window.Destroy();
と
new Gtk.Window(Gtk.WindowType.Popup).Destroy();
そして、それは何の違いもないようです。
このユースケースでメモリリークを防ぐために何をすべきか知っている人はいますか?