我正在进行以下设置和方案:
/tmp/IMAGE
(使用QNetworkManager()
,QNetworkReply()
,readyRead()
)/tmp
是一个ramdisk - 有40 + MB的可用空间(当QT / QML应用程序正在运行时)wget
将20MB文件发送到/tmp/IMAGE
然而尝试通过QT / QML应用程序下载文件时(使用QNetworkManager()
,QNetworkReply()
和readyRead()
- 信号,qt /即使在实际下载文件的一半之前,qml-application也会被内存不足的杀手杀死(根据downloadProgress()
和/tmp/IMAGE
的大小)。
据我了解,readyRead()
专门用于部分下载块,将其写入磁盘,清除其使用的RAM以及下载和写入下一个块。
然而,该方法似乎大量消耗更多RAM,使用wget
- 在下载了10MB文件后,Qt / QML应用程序占用了大量内存,我无法解释。
我基本上在做什么,它将readyRead()
与我的名为partialDownloadFinished()
的广告位相关联,后者只执行:file->write(reply->readAll());
我还检查了块大小是否可能或者可能通过bytesAvailable()
变大,但是情况似乎也不是这样。
我的下一个猜测是,数据的下载速度比写入(ram)磁盘的速度快,但似乎也不是这样。
所以我被困住了。有人对此有任何线索或暗示吗?
非常感谢!