В этом разделе "Мои тесты" указывается, что при использовании NSURLSession с соединением HTTP/2 возникает проблема с памятью.
test1: iOS 9. Сервер HTTP/2
Я использую NSURLSession для загрузки файла 10M на сервер HTTP/2, если загруженный файл завершен, все в порядке, но если я отменил задачу загрузки до ее завершения, 10M никогда не будет выпущен.
test2: iOS 9. Сервер HTTPs1.1
Я тестирую один и тот же код с файловым сервером https1.1, я отменяю задачу загрузки или нет, все в порядке, память возвращается в нормальное состояние (10M-данные освобождаются)
test3 iOS 8. Сервер HTTP/2
В этом случае все нормально. (NSURLSession не согласовал протокол с HTTP/2)
Итак, даже если я не использую NSURLSession, есть что-то, что не соответствует NSURLSession с HTTP/2.
Помимо проблемы с памятью, при использовании NSURLSession с HTTP/2 для загрузки файла размер сегмента прогресса огромен (май 2M "didSendBodyData" при одном обратном обращении)
Я также прочитал эту страницу. SSL может кэшировать некоторые вещи, но не должен кэшировать весь файл. (Когда я отменяю задачу или время ожидания запроса, утечки памяти размера 10 М)
Кто-нибудь знает, что может вызвать проблему, может мне помочь. Благодарю.
Обновление вопроса 0912: добавьте ссылку тестового проекта
Проект тестирования: https://github.com/upyun/swift-sdk/tree/testleak
file:UPUtils.swift
//Change the url to make comparison test.
//let DEFAULT_UPYUN_FORM_API_DOMAIN = "http://v0.api.upyun.com"//http1.1
//let DEFAULT_UPYUN_FORM_API_DOMAIN = "https://httpbin.org/post" //https1.1
let DEFAULT_UPYUN_FORM_API_DOMAIN = "https://v0.api.upyun.com"//http2