プロジェクト

全般

プロフィール

最適化 #927

完了

バグ #925: mikutterがメモリを大量に消費することがある

一度も表示されたことのないGtk::TimeLineに追加されたiterがGCされない

Osamu Koga さんが約8年前に追加. 約8年前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
開始日:
2016-11-09
期日:
進捗率:

0%

プラグイン名:

説明

#925の

>>> GC.start;ObjectSpace.each_object(Gtk::TimeLine).reject{|t| t.destroyed?}.map(&:size).sort.reverse
[3959, 1243, 1041, 383, 206, 200, 200, 200, 200, 187, 182, 119, 117, 108, 97, 84, 76, 73, 60, 60, 59, 59, 58, 56, 52, 51, 44, 41, 41, 40, 40, 39, 38, 37, 35, 35, 34, 34, 29, 28, 27, 27, 27, 27, 25, 24, 24, 23, 23, 23, 22, 22, 21, 21, 20, 20, 14, 13, 12, 10, 8, 8, 7, 6, 5, 5, 5, 5, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

に関して、起動時から1回も表示されていないGtk::TimeLineにMessageを追加すると、@remover_queueに追加されないためiterがずっと残り続けます。


ファイル

mikutter-memory-b1a15108.png (172 KB) mikutter-memory-b1a15108.png 修正前 toshi_a 初音, 2016-11-09 23:15
mikutter-memory-e4984337.png (178 KB) mikutter-memory-e4984337.png 修正後 toshi_a 初音, 2016-11-09 23:15

Osamu Koga さんが約8年前に更新

  • 親チケット#925 にセット

Osamu Koga さんが約8年前に更新

  • ステータス新規 から パッチ適用待ち に変更
  • 担当者toshi_a 初音 にセット

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

たしかにこれは良くないですね。こっちでも実際の効果を測定したいと思うんですが、なんか測定したりしました?

多分、その出力の最大が全部200になるとかですよね

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

全く同じ時間帯に、同時に e4984337 適用前後のmikutterを起動して様子を見てみました。
計測は、ホームタイムラインを表示しながら、抽出タブ(データソース: 全てのメッセージ・条件: 指定なし)をバックグラウンドに開いて、できるだけUIを触らないようにして行いました。

なんか突然増えている謎の時間帯がありますが、Gtk::TreeIterとGdk::MiraclePainterのリークが改善されていて、数が一番多いStringも一定のラインで増加が止まっているように見えます。
一方で、実メモリは550MBと549MB消費していて、ほとんど差がないです。 #925 で言われているように、少量のPixbufなどのオブジェクトの参照が残っていて、メモリを多く消費しているのかも。

ともかくこの修正によってかなり改善することがわかったのでmergeしようと思います。

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

  • ステータスパッチ適用待ち から 終了 に変更

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