我在加載AudioBuffer
中的兩個300MB MP3文件,然後繼續將它們編碼爲WAV文件。編碼過程(發生在網絡工作者)的某個地方,瀏覽器因爲內存不足而崩潰。如何捕捉和處理Chrome內存崩潰?
WAV文件比MP3文件大3倍左右,所以就需要1.8GB〜額外的空間做轉換。
這些文件可以有任何大小,因爲它們是用戶選擇上傳的mp3文件,所以它們可以是10MB或350MB。這意味着內存可能會或可能不足夠。如果它不夠,我該如何簡單地捕捉並處理錯誤,而不是讓瀏覽器崩潰?
我會限制用戶到一個特定的項目(所有文件組合)的大小,但它似乎最大的內存限制隨操作系統,操作系統架構,瀏覽器版本和瀏覽器架構而變化,這使得幾乎不可能定義這種限制。
這個答案(https://stackoverflow.com/a/34667584/5086286)表明,操作系統和瀏覽器版本有內存限制的影響,儘管他可能是說整個標籤的內存,而你說話特別是關於JS堆大小。我認爲'AudioBuffers'包含在V8的堆中,因爲當我採用「堆快照」時,它包含在內。至於WAV編碼,我將轉換爲16位文件,這可能解釋爲什麼它只有3-4倍大。我將測試JS堆限制,然後我會回覆你。非常感謝你的幫助! – maximedupre
我目前有一個工作頁面,其JS堆大小爲1503MB(根據堆快照),這使我相信1400MB不是限制。 – maximedupre
呵,好點。原來Chrome M56的限制是1400 MB,而M57將其限制爲2048 MB。我會更新我的答案。 – jmrk