Не удалось выделить память при отправке Large byte [] с использованием WCF в режиме буферизации

Вы можете использовать цикл for для итерации массива значений параметров и добавления их к выпадающему списку так:

//Example array of values for adding to drop down
const myArray = [ "Dog", "Cat", "Bird" ];

//Iterate your array of values
for(let x = 0; x < myArray.length; x++){
    let z = document.createElement("option");
    z.setAttribute("value", myArray[x]); //Add value of the current item from array
    let t = document.createTextNode(myArray[x]); //Add text of the current item from array
    z.appendChild(t);
    document.getElementById("mySelect").appendChild(z);
}
0
задан Arian 19 January 2019 в 07:29
поделиться

1 ответ

Я помню, что я работал с передачей больших файлов, и я использовал режим buffered для передачи, но это было не лучшее решение, потому что через некоторое время я получил какое-то исключение из-за утечки памяти или чего-то связанного с памятью, я изменил его на [ 111] и все работало нормально, в режиме buffered это означает, что весь контент сообщения присутствует в памяти до его отправки или после его получения. Хотя это хорошая стратегия для большинства сценариев и необходима для таких функций обмена сообщениями, как цифровые подписи и надежная доставка, большие сообщения могут исчерпать ресурсы системы.
взгляните на здесь .

Чтобы не создавать новые буферы постоянно, WCF использует BufferManager для повторного использования буферов, вплоть до предела, указанного в maxBufferPoolSize, buffers, дорого создавать и уничтожать. Вы можете использовать класс BufferManager для управления буферным пулом.

Вы можете попробовать увеличить maxBufferPoolSize , чтобы посмотреть, сможете ли вы уменьшить использование памяти. Я настоятельно рекомендую не увеличивать его до максимума, потому что я думаю, что буферы из пула никогда не освобождаются до тех пор, пока домен приложения не перезапустится. Период большого трафика может привести к тому, что будет использовано много памяти и она никогда не будет освобождена.

Поэтому я рекомендую использовать режим streamed для передачи большого файла.

Чтобы разделить файлы и работать с большими потоками, вам могут помочь ссылки ниже:

Несколько файлов в одном потоке, пользовательский поток
Лучший способ возврата большой файл в виде разделенных zip-файлов, потокового или байтового массива WCF

это также может помочь вам

Несколько потоков в одном потоке не будут правильно переданы клиенту [ 1123]

0
ответ дан Aria 19 January 2019 в 07:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: