0

Pango.LayoutUbuntu 12.04 で Mono + GTK# + Cairo + Pango を使用していますが、オブジェクトの使用時にメモリ リークが発生することがわかりました。

フレームレートが約 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メモリは安定したままですが、1 秒あたり約 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
4

1 に答える 1

0

私の知る限り、Gtk# バインディングにはまだリリースされていない修正がいくつかあります。

たとえば、このメモリ リークの修正

もし私があなただったら、最初に2.12 ブランチの gtk-sharp アップストリーム バージョンを試してみます。それでも問題が解決しない場合は、メモリ リークを自分で見つけて、修正を提案できますか? ありがとう。

于 2012-09-11T21:45:12.520 に答える