Утечка памяти в GTK# + Cairo + Pango
Я использую Mono + GTK# + Cairo + Pango в Ubuntu 12.04 и обнаружил некоторые утечки памяти при использовании Pango.Layout
объект.
Я рисую анимацию с частотой кадров около 30 кадров в секунду, и моя память только увеличивается. Я удаляю много кода и вот что осталось:
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
Вызов памяти остается стабильным, но при этом увеличивается примерно на 10 Кбит / с, что явно недопустимо.
Я что-то не так делаю? Готов ли 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 ответ
AFAIK, были некоторые исправления в привязках Gtk#, которые еще не были выпущены.
Например, это исправление утечки памяти.
Поэтому на вашем месте я бы сначала попробовал версию gtk-sharp для ветки 2.12. Если это не сработает, возможно, вы сами заметите утечку памяти и предложите исправление? Благодарю.