0

PlayNゲームをブラウザで実行しています。私のタスクマネージャーでは、グーグルクロームまたはファイアフォックスのメモリが512MBまでどんどん大きくなっているのがわかります。

考えられる理由は、playnで使用するすべての要素をクリーンアップして破棄しないことです。GarbageCollectorがJavaでクリーンアップを行っていたので、何もクリーンアップしませんでした。HTML5で問題が発生することは考えていませんでした。

それでは、使用後にすべて(IFaces、Layers、Images ...)をクリーンアップする最も簡単な方法は何ですか?

ifaceまたはトップレイヤーを破棄するだけで、PlayNはすべてのサブエレメントを破棄できますか?ImageLayerを破棄しても、基になる画像はおそらく破棄されませんよね?

不特定の質問でごめんなさい。一般的な概念とそのベストプラクティスを理解するだけで済みます。

4

1 に答える 1

1

ほとんどの場合、実行する必要があるのは、不要になったオブジェクトへの参照を保持しないことだけです。ガベージコレクションが残りの処理を行います。

GPUメモリの解放を高速化するために呼び出すことができますがLayer.destroy、ハンドルがガベージコレクションされると、それでも解放されます。TriplePlay UIで、Interface.destroyRootUIからルートを削除し(インターフェイスを維持するが、そのルートは不要になった場合に実行する必要があります)、ルートのレイヤーを破棄します。

発生する可能性のある問題は、HTMLバックエンドが現在ゲームの存続期間中すべてのアセットをキャッシュしていることです。したがって、大量の画像やその他のデータをロードすると、最終的には大量のブラウザメモリが使用されます。特定の画像が複数回読み込まれることはありませんが、ゲームに多数の画像がある可能性があります。

次のPlayNリリースの前に、このキャッシュポリシーを変更する予定です。そのため、画像をキャッシュする必要がある場合は、自分で画像をキャッシュする必要がありますが、少なくとも、必要なときにそれらを解放することができます。

于 2012-05-08T04:08:39.937 に答える