0

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();

そして、それは何の違いもないようです。

このユースケースでメモリリークを防ぐために何をすべきか知っている人はいますか?

4

1 に答える 1

0

ああ - 私自身の質問に答えます。

これにより、メモリリークが防止されるようです。

var window = new Gtk.Window(Gtk.WindowType.Popup);
window.Destroy();
window.Dispose();
于 2012-08-29T16:19:53.570 に答える