Memory leaks GTK#和#x2B中的内存泄漏;开罗+;盘古

Memory leaks GTK#和#x2B中的内存泄漏;开罗+;盘古,memory-leaks,mono,gtk#,cairo,pango,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.

我在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

顺便说一句,Gtk绑定中有一些补丁尚未发布

比如说


所以如果我是你,我会先和你一起尝试。如果这不起作用,也许你可以自己发现内存泄漏并提出修复方案?谢谢。

我找到了一个解决方法,只调用了一次
Pango.CairoHelper.CreateLayout
,然后每次我想画场景时都调用
Pango.CairoHelper.UpdateLayout