繁体   English   中英

使用GoldRaccoon下载大文件时的内存压力(ftp库)

[英]Memory pressure while downloading a large size file using GoldRaccoon(ftp library)

我使用GoldRaccoon作为我的第3个ftp库。 当我下载大文件(> 500MB)时,我的应用程序将因内存不足而崩溃。

下面的快照使用工具来检测我的应用程序中的内存分配。

在此处输入图片说明

在此处输入图片说明

似乎self.receivedData占用了过多的内存分配。 收到内存不足警告时如何处理这些分配?

我知道这已经很老了,但我只是在处理完全相同的事情,我敢肯定其他人也是如此。 它很容易修复,不确定最初为什么没有实现它。

在GRRequestsManager.m中,将此方法替换为此。

- (void)dataAvailable:(NSData *)data forRequest:(id<GRDataExchangeRequestProtocol>)request
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    if (![fileManager fileExistsAtPath:[request localFilePath]])
    {
        [data writeToFile:[request localFilePath] atomically:YES];
    }
    else
    {
        NSFileHandle *handle = [NSFileHandle fileHandleForUpdatingAtPath:[request localFilePath]];
        [handle seekToEndOfFile];
        [handle writeData:data];
        [handle closeFile];
    }
}

然后,在-(void)requestCompleted:(GRRequest *)request方法中,删除下载部分中对文件的写入。 就是这样,现在它不再将文件存储在NSData中并在末尾写入文件,而是继续将数据添加到文件中。 我没有花时间使它漂亮或处理写错误,但是它可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM