Skip to content

performance.measureMemory導入 #33

Description

@mizdra
  • emtimerでメモリリークしているかどうかを調べるため、performance.measureMemory を導入したい

参考

Activity

  1. mizdra commented on Aug 28, 2020

    @mizdra
    MemberAuthor

    とりあえずOrigin Trialのトークン取った

    AtkTziiJ+H04/hSyiMSYZgZDO8LdWV8RWnnVu7bba3W43/eauOQVxCKOlQwVZmJ+V2f7BwSwkOpmMRBZ+dyCLAcAAABseyJvcmlnaW4iOiJodHRwczovL2VtdGltZXIubWl6ZHJhLm5ldDo0NDMiLCJmZWF0dXJlIjoiTWVhc3VyZU1lbW9yeSIsImV4cGlyeSI6MTYwMjI0MDQ0NywiaXNTdWJkb21haW4iOnRydWV9
    

    image

  2. mizdra commented on Aug 28, 2020

    @mizdra
    MemberAuthor

    メモリ使用量と同時に集計したいデータ

    • カウントダウン中かどうか
    • タイマーを開始してからの経過時間
    • ページを読み込んでからの経過時間
    • requestAnimationFrameが発火した回数
      • タブがinactiveな状態にあるとrequestAnimationFrameが発火しない
      • requestAnimationFrame でメモリリークが発生している場合だと、時間経過だけではメモリリークが発生しているかを判断するのが困難
    • セッションID?
      • ページがリロードされたらメモリアロケーションし直されるので、セッションを区別できるようにしておきたい
    • ブラウザ名とそのバージョン
      • ブラウザの種類やバージョンによって内部のデータの持ち方が変わり、メモリ使用量に差が出てくるので、区別できるようにしておきたい
  3. mizdra commented on Aug 28, 2020

    @mizdra
    MemberAuthor
    • カウントダウン中/カウントダウンしていない時両方で測定
      • カウントダウンによってメモリリークしているかは当然知りたいし、カウントダウンしていない時でも時間経過でメモリリークしているのか、も知りたい
    • 間隔は5分おき
      • あんまり頻繁にやっても邪魔なのでとりあえず5分としてみる
    • カウント時間が0秒近くの時は performance.measureMemory を呼び出さないようにしたい
      • GCが走ってstop the worldするため
      • ラスト1秒で画面の更新が止まって乱数調整に失敗した、とかなると悲惨
      • とはいえ仕様上は performance.measureMemory を呼び出した後任意のタイミングでGCが走って結果が返ってくる、ということになっている
        • つまり極端な話GCが走るのは1時間後かもしれない
        • どうしよう
      • ひとまず performance.measureMemory を呼び出してから数分以内にGCが呼び出されるという仮定のもと、カウント終了まで3分以内だったら performance.measureMemory を呼び出さない、という対応にしてみる
  4. mizdra commented on Sep 29, 2020

    @mizdra
    MemberAuthor

    集計もうやめたけど、まだエンドポイントは生きているせいか、古いキャッシュを使い続けているユーザから集計結果が3000件くらいPOSTされているように見えている。もうちょっとでquotaに達しそう…

    image

    image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions