4

これはフィドルです:http://jsfiddle.net/36mdt/

約 10 ~ 20 秒後、クラッシュの直後にディスプレイがランダムにフリーズし始めます。これを Firefox で再現することはできません。

プロファイリングでは、異常なことは何も明らかになりません。

http://jsfiddle.net/3pbdQ/は、メモリリークが確実にあることを示しています。1 FPS でも、メモリ使用量はフレームあたり 5 メガバイトになります。

余談ですが、この例は、Math.random() が実際にはそれほどランダムではないことを示しています。

4

3 に答える 3

3

パフォーマンスの改善を 2 つだけ行いましたが、5 分後にクラッシュすることはありません (メモリ リークもしていないようです)。チェックアウトhttp://jsfiddle.net/3pbdQ/3/

  1. 各反復内のサイズを計算しないでください
  2. フリーズ間隔の代わりにタイムアウトを使用します。
  3. 数値のフロアリングにビット演算子を使用する

プロファイリングでは、異常なことは何も明らかになりません。

Chrome Profiler は WebWorkers では機能しません。ポール・アイリッシュとの会話によると:

「について確認してください:共有ワーカーを調べてください。また、ワーカーコード内で console.profile() を実行して(私は思う)、それらのビットをキャプチャすることもできます。「クリーンアップ」はガベージコレクターです。クリーンアップ後もまだ成長している場合余分なメモリの行、それはリークです。」

余談ですが、この例は、Math.random() が実際にはそれほどランダムではないことを示しています。

完全なランダム アルゴリズムがないことはよく知られていますが、表示されるグループ化された色の束は、canvas.height と canvas.width を設定していないためであり、CSS 値とは異なります。

編集: まだメモリがリークしていますが、理由はわかりません。約 10 秒後に「クリーンアップ」します。私の知識を超えていますが、60 FPS でスムーズに動作します ( var TIME = 16)

于 2012-06-14T17:21:58.997 に答える
1

ほとんどのシステムと互換性のある一般的な手順を提供するために最善を尽くしましたが、使用するシステムとブラウザのバージョンによって手順が異なる場合があります。

サンドボックスを無効にする: 1. Google Chrome デスクトップ アイコンを右クリックします。2. [プロパティ] を選択します。3. ショートカット > ターゲットをクリックします。4. 「--no-sandbox」を追加します。わかった。6. ZombieSoftFix をダウンロードしてインストールします。7. 検出された競合を確認して解決します。

プラグインを無効にする: 1. アドレス バーに「about:plugins」と入力します。2. ENTER を押します。3. リスト ページに表示されているすべてのプラグインを無効にします。

一時ファイルのクリア: 1. [レンチ] をクリックします。2. [その他のツール] | [ツール] を選択します。閲覧履歴データの消去。3. すべてのボックスを確認し、[閲覧データの消去] ボタンをクリックしてプロセスを確認します。

ありがとうございます。それでは、お元気で。

于 2015-01-10T14:08:37.377 に答える
0

これは残念なことに、既知のChromeのバグです。

于 2012-08-25T03:13:06.280 に答える