Утечка памяти в методе sendH (XMLHttpRequest) - PullRequest
1 голос
/ 19 марта 2020

Я пытаюсь отправить файл с XMLHttpRequest на сервер Flask. В основном это то, что я делаю:

<!-- this is the HTML input element -->
<input name="file" type="file" onchange="sendBlob(this.files[0])" multiple>

function sendBlob(file)
{
    var chunkSize = 500000000; // 500 MB

    var xhr = new XMLHttpRequest();

    var blob = file.slice(0, chunkSize, "application/octet-stream");

    xhr.open("POST", "http://127.0.0.1:5000/api/get_layout/");

    xhr.onreadystatechange = function()
    {
        if (this.readyState == 4 && this.status == 200)
            console.log("blob successfully sent.");
    }

    xhr.setRequestHeader("Content-Type", "application/octet-stream");
    xhr.setRequestHeader("X-Content-Name", "blob");

    xhr.send(blob);
}

состояние памяти до xhr.send ()

Эта функция фактически работает и успешно отправляет файл на сервер, но увеличивает оперативную память, не освобождая ее. В частности, он увеличивается ровно на 500 МБ, что соответствует размеру отправляемого большого двоичного объекта.

состояние памяти после xhr.send ()

Что проблема может быть? Я уже знаю, что Javascript имеет сборщик мусора, но кажется, что он не собирает объект xhr после выполнения запроса (т. Е. Сервер вернул код состояния 200).

Если я закрою свой веб-браузер после этого процесса освобождается память. Я не могу понять, почему это происходит.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...