【问题标题】:Memory pressure while downloading a large size file using GoldRaccoon(ftp library)使用 GoldRaccoon(ftp 库)下载大文件时的内存压力
【发布时间】:2015-06-29 03:27:36
【问题描述】:

我使用 GoldRaccoon 作为我的第三个 ftp 库。 当我下载大尺寸 (> 500MB) 文件时,我的应用会因内存压力而崩溃。

使用仪器检测我的应用程序中的内存分配的快照如下。

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

【问题讨论】:

    标签: ios download ftp


    【解决方案1】:

    我知道这很旧,但我只是在处理完全相同的事情,我相信其他人也是如此。很容易修复,不知道为什么一开始没有这样实现。

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

    - (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 中并在最后写入,它只是不断地将数据添加到文件中。我没有花时间让它漂亮或处理写入错误,但它确实有效。

    【讨论】:

      猜你喜欢
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多