Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[不具合][全般]メモリ食い過ぎ #10

Closed
xpadev-net opened this issue May 29, 2022 · 9 comments
Closed

[不具合][全般]メモリ食い過ぎ #10

xpadev-net opened this issue May 29, 2022 · 9 comments
Assignees
Labels
bug Something isn't working [ブラウザ]Chromium Chrome/Edge [ブラウザ]Gecko Firefox
Milestone

Comments

@xpadev-net
Copy link
Owner

概要

コメントを大量に読み込むと、コメントのキャッシュが溜まってメモリが爆発する

Brave@m1 macで試したところ12GBを越えたあたりで爆発した

キャッシュの最大保持数を設定する必要があるかも
そもそも50000件も普通読み込まないから問題ないと思うけど

@xpadev-net xpadev-net added the bug Something isn't working label May 29, 2022
@xpadev-net xpadev-net self-assigned this May 29, 2022
@xpadev-net xpadev-net added this to the ver 0.3.0 milestone May 29, 2022
@xpadev-net
Copy link
Owner Author

Firefox@Windows 11/8GBで試したところ、
いい感じにメモリを開放しているようで、全体で2GBくらいしか消費しなかった
しかし、途中でタブがクラッシュするため、どのみち制限は必須

@xpadev-net
Copy link
Owner Author

xpadev-net commented May 30, 2022

基本的に弾幕はサイズと色が同じなので、
コメントごとに画像を生成するのではなく、コメントの内容ごとに画像を生成すれば
生成されるノード数を減らせるかも

@xpadev-net
Copy link
Owner Author

xpadev-net commented Jun 2, 2022

image
Objectのノード数が60万近くあるため、timelineに保存するデータをコメントの表示開始タイミングのみに変更してノード数削減をしたほうがいいかもしれない
-> 1コメントあたりで300 -> 1に減らせるためかなり削減できると思われる
ソースコード確認したらtimelineにはコメントidしか格納してなかったからあまり変わらない
それに時間経過でメモリが増えるわけだからtimelineは関係ない

@xpadev-net
Copy link
Owner Author

canvas elementを保管している変数をdeleteしてメモリが開放されるなら画像生成時にsettimeoutで3+a秒経過後に削除して、消えてたら再生成とかのほうがメモリには優しそう

@xpadev-net
Copy link
Owner Author

image
パフォーマンスログを見る限りfill/stroke textはあまり負荷に影響していないので多少増やしても問題なさそう
メモリ問題さえ解消すれば快適に動くようになりそう

@xpadev-net
Copy link
Owner Author

xpadev-net commented Jun 3, 2022

image

流星群の最初-最後通した際、物理メモリ16GBなのにfirefoxだけで40GB超え ワケガワカラナイヨ

@xpadev-net
Copy link
Owner Author

ver 0.2.11で対応

@xpadev-net xpadev-net reopened this Jun 18, 2022
@xpadev-net
Copy link
Owner Author

弾幕は基本的に短期間にまとまって来るのでキャッシュとclearするtimeoutを内容をキーにして保持しておいて同じコメが流れたらtimeoutを更新するようにすれば弾幕周辺の処理を軽量化できそう

@xpadev-net
Copy link
Owner Author

xpadev-net commented Sep 7, 2022

同一コメント、同一コマンドでキャッシュを再利用
cc0ec61 で対応

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working [ブラウザ]Chromium Chrome/Edge [ブラウザ]Gecko Firefox
Projects
Archived in project
Development

No branches or pull requests

1 participant