Project

General

Profile

Actions

バグ #556

closed

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

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

Added by toshi_a 初音 almost 12 years ago. Updated over 11 years ago.

Status:
終了
Priority:
通常
Target version:
-
プラグイン名:
ブランチ:
クラッシュする:

Description

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


Files

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
Actions #1

Updated by toshi_a 初音 almost 12 years ago

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

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

Actions #2

Updated by toshi_a 初音 almost 12 years ago

先の、わずかに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 にも適用する。

Actions #3

Updated by toshi_a 初音 over 11 years ago

  • Status changed from 実装待ち to 終了
Actions

Also available in: Atom PDF