GTK中的内存泄漏#+ Cairo + Pango

时间:2012-09-11 12:13:18

标签: memory-leaks mono gtk# cairo pango

我在Ubuntu 12.04上使用Mono + GTK#+ Cairo + Pango,在使用Pango.Layout对象时发现了一些内存泄漏。

我正在绘制一些帧速率约为30 fps的动画,而我的记忆力只会增加。我删除了很多代码,剩下的就是:

void OnDraw(DrawingArea area)
{
    Cairo.Context context = Gdk.CairoHelper.Create(area.GdkWindow);

    using (var lay = Pango.CairoHelper.CreateLayout(context))
    {
        // Nothing.  
    }

    ((IDisposable) context.Target).Dispose();
    ((IDisposable) context).Dispose();
}

如果没有Pango.CairoHelper.CreateLayout调用,内存保持稳定,但随着它的增加每秒大约10k,这显然是不可接受的。

我有什么问题吗? Mono + GTK#+ Cairo + Pango是否可以投入生产?

Mono version : 2.10.8.1-1ubuntu2.2
GTK# version : 2.12.10-2ubuntu4
Pango version : 1.30.0-0ubuntu3.1
uname : Linux ######-VirtualBox 3.2.0-29-generic-pae #46-Ubuntu SMP Fri Jul 27 17:25:43 UTC 2012 i686 i686 i386 GNU/Linux

1 个答案:

答案 0 :(得分:0)

AFAIK,Gtk#绑定中有一些尚未发布的修复。

例如this memory leak fix

所以,如果我是你,我会首先尝试the gtk-sharp upstream version of the 2.12 branch。如果这不起作用,也许你可以自己发现内存泄漏并提出修复建议?感谢。