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