Linear ArchiveArchived issues viewer
← Back to list
INS-922

iOS 実機検証 ガチャイベントキャラクター ランファ 累積するメモリリーク

StatusDone
TeamInstansys
Assigneeasuki.uehata@instansys.co.jp
PriorityMedium
Created2026/07/10 08:31
Completed2026/07/10 19:41
Archived2026/07/18 00:43
Bug

Description

累積メモリリーク

ガチャから、ホーム画面に戻っても、ガチャイベントキャラクター ランファの 立ち絵 画像preload が 保持されたまま。

それだけならば、よしとしても、再びガチャの画面にいくと、2個目の ランファ立ち絵を preload してしまう問題。

以下は、ガチャ 2回目 表示で ランファ立ち絵2枚目 preload

メモリりーくランファ.webp

Comments (2)

asuki.uehata@instansys.co.jp2026/07/10 08:41

ガチャに訪れる度に、ランファの立ち絵が preload され続けて累積していく現象を確認した。

0

{url: "https://utsaqkhxqllqkazxzhow.supabase.co/storage/v…6c89f0b0bacf/085da1be-212b-4cf2-848d-53ffaf97c617", source: "unknown", bytes: 1540775, ms: 74}

1

{url: "https://utsaqkhxqllqkazxzhow.supabase.co/storage/v…6c89f0b0bacf/085da1be-212b-4cf2-848d-53ffaf97c617", source: "unknown", bytes: 1540775, ms: 52}

2

{url: "https://utsaqkhxqllqkazxzhow.supabase.co/storage/v…6c89f0b0bacf/085da1be-212b-4cf2-848d-53ffaf97c617", source: "unknown", bytes: 1540775, ms: 71}

松尾弥玖人2026/07/10 19:35

修正しました(PR #863、develop マージ済み)。

根本原因: useLayeredImagePreload がガチャ画面のマウントごとに fetch→新規 Blob→新規 objectURL を作り直していたため、訪問のたびに立ち絵(1540775 bytes)の再取得・再デコードが累積していました。参照カウント+バイト上限 LRU の blob-url-cache を新設し、同一 URL には常に同一 objectURL を返す構造に変更しています。

iOS シミュレータでの A/B 検証(ホーム⇄ガチャ20往復):

  • 修正前: 立ち絵 fetch が直近100件中 24件(訪問ごとに累積 = このissueのログの再現)
  • 修正後: 0件(初回の1回のみ)。再訪時も立ち絵は正常表示

実機でご確認いただく場合は、ガチャ⇄ホームを数回往復後に Web Inspector で __assetCacheMetrics.recent を見ると、supabase の立ち絵 fetch が初回の1件だけになっているはずです。

補足: 検証中に、立ち絵とは別の要因でホーム⇄ガチャ往復のメモリ累積(~20MB/往復、両ビルド共通)が残っていることを確認し、INS-923 として起票しました。実機で「まだ増える」と見える場合はそちらの現象です。再発防止のガードレール(lint / e2e 回帰テスト / 計測ハーネス修正)は PR #865 で追加しています。