11

これは、テストしたすべてのブラウザー (Windows の IE、Firefox、Chrome、Safari、Apple の Safari) で見つかりました。

伝えられるところによると、ブラウザの更新、戻るボタン、または進むリンクは、ブラウザ ノード、javascript 変数およびオブジェクトなどをダンプする必要があります。これは、WebGL には当てはまらないようです。約 100MB から 200MB のメモリを必要とする複雑な WebGL アプリケーションを開発しているときに、最初に気付きました。開発中は何度も更新を行う必要があり、5 ~ 10 回の更新後にコンピューターの速度が低下し、フリーズし始めました。

いくつかの調査の後、これはあってはならないことに気付きました。メモリ リークからの受け入れられた解決策は、ページを更新することです。これにより、すべての JavaScript オブジェクト、変数、および DOM ノードが解放されます。しかし、次の画像を見てください。

それで、ここでの取引は何ですか?小さなアプリでは気付かれませんが、私のような大規模な WebGL アプリ (orbitingeden.com) の場合、これは実際の問題であり、私のユーザーはソフトウェアが実際よりもさらに多くのリソースを浪費していると考えるでしょう。次の画像は、これらの更新が使用可能なメモリをすべて使い果たしていることを示しているため、ガベージ コレクションが機能していないか、JS および DOM オブジェクトが解放されていません。

ここに画像の説明を入力
(ソース: orbitingeden.com )

誰かがブラウザにメモリの真のダンプを強制するトリックを知っていますか? そこにあるすべてのドキュメントが間違っているのはなぜですか?

4

1 に答える 1

2

ガベージ コレクションのポイントの 1 つは、使用されなくなったオブジェクトがすぐにクリーンアップされないことです。ガベージ コレクターは、コレクションを実行するのに最も便利な時期を自分で判断できます。

使用するメモリが十分にある限り、ガベージ コレクション システムが未使用のオブジェクトをヒープに残すのは正常です。未使用のメモリが大量にあるからといって、コンピュータの動作は速くなりません。

于 2012-07-01T23:56:42.457 に答える