0
function f() {
// some code.. then:
var bloburl = URL.createObjectURL(canvasToBlobOutput)
// I could would do the following line, but assume I don't
// imgElement.src = bloburl;
// will this leak memory?
}
imgElement.src行のコメントを外すと、img要素がblobオブジェクトをメモリに「フック」することがわかりました。しかし、私たちが(この行なしで)このような機能を実行すると、bloburl
をGCできなかった理由は分かりません。関数の後の参照はありません。JavaScriptなぜwindow.URL.createObjectURLを取り消す必要がありますか?
MDN:['URL.createObjectURL()'](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL)静的メソッドは、そのURLを表すURLを含むDOMStringを作成します。パラメータで与えられたオブジェクト。 ** URLの有効期間は、作成されたウィンドウ内のドキュメントに関連付けられます。**ブラウザは、ドキュメントがアンロードされると自動的にこれらを解放します。ただし、最適なパフォーマンスとメモリー使用量のために、明示的にアンロードできる安全な時間がある場合は、そうする必要があります。 – Andreas
これは、ウィンドウ/ドキュメントがアンロードされたときに明らかにすべてが解放されることを示しています。オブジェクトがメモリに保持されている理由を理解できないので、 – user3599803