gpt4 book ai didi

ios - NSURLConnection 在 instruments 中增长,这是 NSURLCache 吗?

转载 作者:可可西里 更新时间:2023-11-01 05:53:06 26 4
gpt4 key购买 nike

所以我的应用程序存在内存问题。该应用程序有一个带有 MKOverlayRenderer 的 MKMapView,可在 map 上加载图像。一切正常,但 30-60 分钟后应用程序因内存崩溃。

通过 Instruments,我发现 NSURLConnection 正在增长,因为我找不到其他任何东西(除了所有我不理解的东西)我认为那是我的问题。

运行1-2分钟后仪器截图:

instruments NSURLConnection

运行 12-13 分钟后的仪器截图: instruments after 12-13 minutes

图像在 canDrawMapRect 方法中像这样加载并保存到 tmp 文件夹(如果我关闭它,NSURLConnection 将不会增长那么高):

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
[NSURLConnection sendAsynchronousRequest:request
queue:[OperationQueues sharedOperationQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {


[data writeToFile:path atomically:YES];

然后在drawMapRect方法中加载。

我尝试使用以下代码修复此问题:

应用委托(delegate):

int cacheSizeMemory = 4*1024*1024; // 4MB
int cacheSizeDisk = 32*1024*1024; // 32MB
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"];
[NSURLCache setSharedURLCache:sharedCache];

NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory
diskCapacity:cacheSizeDisk
diskPath:nil];
[NSURLCache setSharedURLCache:URLCache];

View Controller :

- (void)didReceiveMemoryWarning
{
[[NSURLCache sharedURLCache] removeAllCachedResponses];
[super didReceiveMemoryWarning];
}

在请求之后:[添加]

[[NSURLCache sharedURLCache] removeCachedResponseForRequest:request];

但正如您在 Instruments 中看到的那样,没有任何运气。

  1. 这会不会是我的问题?
  2. 这是正在增长的 NSURLCache 还是其他?

根据要求,从仪器中获取更多屏幕截图:

statistics enter image description here

最佳答案

首先,一分钟内 400 个网络请求似乎有点过分。其中一些请求可能是重复的或不必要的。调用量显然是在下载大量信息,并且没有给操作系统太多时间进行清理。

其次,您的 NSURLCache 实际上提供了比默认缓存更多 的内存空间。我在我的设备/模拟器上进行了测试,ios 提供了 512 000 字节的默认内存容量。您的缓存已初始化为 4 194 304 字节(以及磁盘上的更多字节)。

我建议您将缓存大小设置得更小,以便看到一些改进。但是,调查所发出的网络请求的数量将提供更长期的好处。

关于ios - NSURLConnection 在 instruments 中增长,这是 NSURLCache 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27610373/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com