AudioBuffer
に2つの300MB MP3ファイルをロードしてから、WAVファイルとしてエンコードします。エンコーディングのプロセスのどこかで(Webワーカーで起こる)、メモリ不足のためブラウザがクラッシュします。Chromeのメモリクラッシュを捕まえて処理する方法
WAVファイルは、MP3ファイルよりも約3倍大きいので、変換を行うために〜1.8ギガバイト追加のスペースが必要になります。
ファイルは、ユーザーがアップロードを選択したmp3ファイルであるため、10MBまたは350MBにすることができます。これは、メモリが十分であるか不十分である可能性があることを意味します。十分でない場合は、単にブラウザをクラッシュさせる代わりに、単にエラーを捕まえて処理するだけですか?
私はユーザーを特定のプロジェクト(すべてのファイルを結合したもの)のサイズに制限しますが、OS、OSアーキテクチャ、ブラウザのバージョン、ブラウザのアーキテクチャによって最大メモリの制限が異なるようです。
この回答(https://stackoverflow.com/a/34667584/5086286)では、OSとブラウザのバージョンがメモリ制限に影響を与えることを示していますが、話している間にタブメモリ全体を話している可能性があります具体的にはJSヒープサイズに関するものです。 「AudioBuffers」はV8のヒープに含まれていると思います。「ヒープスナップショット」を取ると、それが含まれています。 WAVエンコーディングについては、16ビットファイルに変換しています。これは、なぜ3〜4倍のサイズにすぎないのかを説明します。私はJSのヒープの限界をテストし、私はあなたに戻ってきます。あなたの助けをありがとう! – maximedupre
私は現在、JSヒープサイズが1503MB(ヒープスナップショットによる)の作業ページを持っています。これは1400MBが限界ではないと信じさせています。 – maximedupre
ハァッ、良い点。 Chrome M56とM57がそれを2048 MBにぶつけるまで、限界は1400 MBだったことが分かります。私は私の答えを更新します。 – jmrk