这个“我的测试”案例指出,当使用带有HTTP/2连接的NSURLSession时,存在内存问题。
测试1:iOS 9.HTTP/2服务器
我使用NSURLSession将10M文件上载到HTTP/2服务器,如果上载的文件完成了,一切正常,但如果在完成之前取消上载任务,10M将永远不会释放。
测试2:iOS 9.HTTPs1.1服务器
我用一个https1.1文件服务器测试相同的代码,我是否取消上传任务,一切正常,内存恢复正常。(发布10M数据)
test3 iOS 8.HTTP/2服务器
这种情况下一切正常。(NSURLSession未与HTTP/2进行协议协商)
因此,即使我使用NSURLSession有一些不合适的地方,但使用HTTP/2时,NSURLSsession的性能也不正常。
除了内存问题外,当使用带有HTTP/2的NSURLSession上载文件时,进度段的大小非常大(5月2日,一次回调时,“didSendBodyData”)
我也读过
this page
任何知道问题原因的人都可以给我一些帮助。
谢谢
问题更新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