-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
AiScript UI APIがメモリリークを引き起こす #15173
Comments
やります |
型エラーが多くてつらい |
|
確かに |
IDが指定されていないコンポーネントも |
ならこの問題は解決できないのか…… 🤯 |
dispose関数的なものを用意するとか(指定したIDのコンポーネントを削除する) 悪意あるプログラムがメモリを食いつぶす問題は避けられないけど、通常のプログラムのパフォーマンス改善には使えるかもしれない |
別issue立てたほうがいいかもしれないけど let c1 = Ui:C:text({ text: '1' }, 'id')
let c2 = Ui:C:text({ text: '2' }, 'id')
Ui:render([c1, c2]) 配列内のidが一致した最初のコンポーネントが使用されるから、こういうコードを実行すると1つ目のコンポーネントだけが表示されるけど、どういう挙動するのが理想なんだろう |
私は2回目の |
💡 Summary
Playやスクラッチパッド、ウィジェットのAiScriptにおいて、
Ui:C
名前空間下の関数を呼び出すと、そのUIコンポーネントが不要となってもオブジェクトがメモリに残り続けます。このことにより、
Ui:C
以下の関数を呼び出してコンポーネントを新規作成し、UIを更新すると、メモリリークが発生する可能性があります。この問題を発生させるAiScriptコード:
実行前後のメモリの使用量:
Ui:C
名前空間下の関数によって実行される関数createComponentInstance
はRef<AiUiComponent>
の配列にコンポーネントを追加しますが、Playやスクラッチパッド、ウィジェットで定義されたその配列から要素が削除されることは無いようです。
🥰 Expected Behavior
Ui:C
名前空間下の関数を呼び出しても不要となった後にメモリが解放される🤬 Actual Behavior
Ui:C
名前空間下の関数を呼び出すと、リロードするまでメモリが確保されたままになる📝 Steps to Reproduce
💻 Frontend Environment
🛰 Backend Environment (for server admin)
Do you want to address this bug yourself?
The text was updated successfully, but these errors were encountered: