プロジェクト

全般

プロフィール

バグ #556

完了

バグ #198: ダークマターの討伐

Gtk::TreeIterがリークしている問題

toshi_a 初音 さんが11年以上前に追加. 約11年前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
-
プラグイン名:
ブランチ:
クラッシュする:

説明

#198 でこのところメインの話。このテーマについてはこちらのチケットに書く。


ファイル

mikutter-memory.20130113.png (184 KB) mikutter-memory.20130113.png RubyGtk2に手を入れた toshi_a 初音, 2013-01-13 13:47
mikutter-memory-20130131.png (237 KB) mikutter-memory-20130131.png 計測結果(最小構成)メモリリークはほぼない toshi_a 初音, 2013-01-31 01:47

toshi_a 初音 さんが11年以上前に更新

RubyGtk2のコードに少し手を入れたらGtk::TreeIterがガベージコレクトされるようになった。Stringとかがギザギザなのは TimeLimitedStorage でオブジェクトの参照が定期的に切り離されてGCが働くからだと思う。
ただこれで完全に解決かどうかは怪しい。今でも若干Gtk::TreeIterが時間経過と共に、ごくわずかにだが増えていってる。

もう少しちゃんと調査して、この変更をRubyGnome2プロジェクトに取り込んでもらうべきかどうか考えてみる。

toshi_a 初音 さんが約11年前に更新

先の、わずかにGtk::TreeIterがリークしている問題も原因が判明し、修正を加えて、home_timelineと依存する幾つかのプラグインだけで60時間以上稼働させてみたところ、最終のメモリ使用量は470MB程度になった。また、オブジェクトの数の遷移のグラフを見ても、ほぼ増えていないので解決したといってよさそう。

今回手を入れたコードを、 RubyGNOME2 プロジェクトに送ったところ、取り込んでもらえた。

https://github.com/ruby-gnome2/ruby-gnome2/pull/128

また、この変更は 1/30 にリリースされた Ruby GNOME2 1.2.1 に含まれている。これからもディストリのパッケージの関係などで古いRuby Gtkを使い続ける人が多いと思われるので、メモリリーク回避用のコードは削除せずに残しておき、起動時にバージョンを確認して、どちらの実装を使うか選択するようにする。
また、この不具合に対する対策は、 0.2.1 にも適用する。

toshi_a 初音 さんが約11年前に更新

  • ステータス実装待ち から 終了 に変更

他の形式にエクスポート: Atom PDF