Tag: 内存

在iOS上使用RNCryptorencryption/解密大文件时存在内存问题

我正在尝试使用RNCryptor在iOS上encryption和解密大文件(600 + MB)。 在github上,我find了关于如何在stream上asynchronous使用库的示例代码。 这个代码类似于Rob Napier在关于这个相同主题的问题上的答案。 不过,尽pipe我认为我正确实施了代码,但是应用程序使用了高达1.5 GB的内存(在iPad 6.1模拟器中)。 我认为代码应该防止应用程序保持在内存中的多个数据块? 那么是怎么回事? 在我的控制器中,我创build了一个encryption/解密请求消息的CryptController。 // Controller.m NSString *password = @"pw123"; self.cryptor = [[CryptController alloc] initWithPassword:password]; //start encrypting file [self.cryptor streamEncryptRequest:self.fileName andExtension:@"pdf" withURL:[self samplesURL]]; //wait for encryption to finish NSDate *timeout = [NSDate dateWithTimeIntervalSinceNow:1]; do { [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:timeout]; } while (![self.cryptor isFinished]); 在CryptController中我有: – (void)streamEncryptionDidFinish { […]

在iOS中通过HTTP获取图像时不断增长的内存分配

我正在实现一个需要通过HTTP获取大量图像的iOS应用程序。 我已经尝试了几种方法,但独立我做什么,Instuments显示不断增加的内存分配和应用程序迟早崩溃,当我在设备上运行它。 仪器没有显示泄漏。 到目前为止,我已经尝试了以下几点: 在NSOperation中使用同步NSURLConnection获取图像 在NSOperation中使用asynchronousNSURLConnection获取图像 在主线程中使用[NSData dataWithContentsOfURL:url]获取图像 在NSOperation中使用同步ASIHTTPRequest获取图像 使用asynchronousASIHTTPRequest获取图像并将其添加到NSOperationQueue 使用asynchronousASIHTTPRequest并使用completionBlock获取图像 Instrumetns中的调用树显示内存在处理HTTP响应时被占用。 在asynchronousNSURLConnection的情况下, – (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [receivedData appendData:data]; } 在同步NSURLConnection的情况下,Instruments显示一个正在增长的CFData(存储)条目。 ASIHTTPRequest的问题似乎与在类似的代码位置的asynchronousNSURLConnection相同。 这个[NSData dataWithContentsOfURL:url]方法显示了在exactely那个语句中增加的总内存分配量。 当请求在一个单独的线程完成时,我正在使用一个NSAutoReleasePool,我试图用[[NSURLCache sharedURLCache] removeAllCachedResponses]释放内存 – 没有成功。 任何想法/提示解决问题? 谢谢。 编辑:行为只显示如果我坚持图像使用CoreData。 这里是我作为NSInvocationOperation运行的代码: -(void) _fetchAndSave:(NSString*) imageId { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSString *url = [NSString stringWithFormat:@"%@%@", kImageUrl, imageId]; HTTPResponse *response = […]

为什么简单的网站崩溃在移动(iOS Safari和至less)?

我有一个非常简单,但很长的网站 – 很多可以滚动的文本。 这是一个文档站点,考虑到内容的性质(很多类似的简短条目),我决定一次显示所有内容,这样用户可以从条目滚动到条目,或者通过侧栏索引进行导航。 这是我喜欢的通用文档模型(例如Underscore , Backbone和LoDash )。 该网站是在这里: http : //davidtheclark.github.io/scut/ 。 您可以在这里查看预生产代码: https : //github.com/davidtheclark/scut/tree/master/docs/dev 。 这里的问题是: 对于许多用户来说,这个站点一直崩溃,他们的iOS浏览器 。 不是所有的用户(不是我); 但对于那些经历过这次事故的人来说,似乎还是一再发生。 (该网站也可能会导致一些人的Android手机死机,我不知道:有没有听说过任何Android用户。) 我希望有人能帮助我诊断,并可能解决这个问题。 我遇到的困难之一是我无法自己重现崩溃 – 不是在我自己的iOS设备上,而不是在Xcode模拟器上。 由于这个站点资源不是很重(大约70KB的负载),并且涉及的JavaScript很less,而且由于之前几次尝试解决这个问题的影响, 我猜测这个问题涉及到内存使用 – 那就是iOS浏览器正在崩溃,因为该网站要求太多的内存。 但我不确定这是个问题,如果是这样,我不知道我该如何解决这个问题。 我不知道接下来要尝试什么,我希望一些精明的StackOverflow专家有build议。 关于这个网站,这个网站看起来如此简单和基本,是什么使得网站的内存要求太高,导致浏览器崩溃呢? 它太长了吗? 是否有CSS难以呈现? 有没有JavaScript内存泄漏? 我对这个特定的网站感兴趣,所以我可以学会在未来的其他网站上预测和预防和/或诊断和修复类似的问题。 随时查看或贡献[Github问题]( 在这个Github问题 ,以及。 附录 以下是有关可能相关的网站的一些知识: HTML文档相对于其他网站的HTML文档来说是很大的 。 Unminified它看起来是〜225KB。 (我注意到LoDash文档更大 – 这个网站是否会让人们的手机崩溃?) 提供的HTML文档被缩小。 所服务的CSS和JS也被缩小了。 该网站使用Prism.js语法突出显示。 该网站使用颠倒来使平板电脑上的2滚动列布局工作。 固定和翻译屏幕上的<aside […]

什么是iOS内存足迹的正确统计数据。 现场字节? 真正的记忆? 其他?

我对此很困惑。 我有一个iPad应用程序,在对象分配工具中显示6-12mb的“实时字节”使用情况。 如果我拔出内存监视器或活动监视器,“真实内存”列将在一些严重的使用情况下持续攀升至80-90mb左右。 那么我有一个正常的内存足迹还是一个高的? 这个答案和这个答案声称你应该看'实时字节'作为'真正的内存'列显示内存块已被释放,但操作系统还没有回收它。 另一方面, 这个答案声称你需要关注那个内存监视器,因为“实时字节”不包括像界面元素这样的东西。 iOS内存占用情况如何? 🙂

内存警告后,崩溃在iOS上运行OpenGL

我在iPad上遇到OpenGL组件崩溃的问题。 该应用程序抛出一个内存警告和崩溃,但似乎并没有使用那么多的内存。 我错过了什么吗? 该应用程序基于Vuforia增强现实系统(借鉴ImageTargets示例)。 我有约40个不同的模型,我需要包括在我的应用程序,所以为了记忆保护的利益,我正在加载对象(和渲染纹理等)dynamic在应用程序,因为我需要他们。 我试图复制UIScrollView延迟加载的想法。 这三个4mb分配是当用户select不同的模型显示时,我已经加载到内存中的纹理。 这里有什么奇怪的东西? 我对OpenGL知之甚less(我selectVurforia引擎的部分原因)。 这个屏幕下面的任何内容应该关注我吗? 请注意,Vurforia的ImageTagets示例应用程序也有未初始化的纹理数据(每帧大约一个),所以我不认为这是问题。 任何帮助,将不胜感激!! 以下是生成3D对象的代码(在EAGLView中): // Load the textures for use by OpenGL -(void)loadATexture:(int)texNumber { if (texNumber >= 0 && texNumber < [tempTextureList count]) { currentlyChangingTextures = YES; [textureList removeAllObjects]; [textureList addObject:[tempTextureList objectAtIndex:texNumber]]; Texture *tex = [[Texture alloc] init]; NSString *file = [textureList objectAtIndex:0]; [tex loadImage:file]; [textures […]

加载UITableView崩溃导致的消息发送到释放实例

我的testing应用程序加载了由[1421:12503] *** -[__NSArrayM class]: message sent to deallocated instance 0x10ae83e0引起的UITableView和崩溃[1421:12503] *** -[__NSArrayM class]: message sent to deallocated instance 0x10ae83e0 。 进程在main()方法崩溃时停止。 而这个崩溃只发生在模拟器为ios 4.3.2,它可以在ios 4.3.2和ios 5.1的设备,它也可以在模拟器的ios 5.1。 我找不到哪个实例被释放不正确。 我在terminal中使用命令malloc_history 1421:12503 0x10ae83e0来尝试find任何有价值的线索。 但是我只能得到以下信息: > ALLOC 0x10ae83e0-0x10ae83f7 [size=24]: thread_ac2502c0 |start | main | UIApplicationMain | GSEventRun | GSEventRunModal | CFRunLoopRunInMode | CFRunLoopRunSpecific | __CFRunLoopRun | __CFRunLoopDoSource1 | __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ […]

iOS:ARC,不释放内存

我有一个奇怪的问题与我的iOS应用程序。 一段时间后,我的应用程序在内存很低,所以内存警告,一切似乎没有问题,但是当我检查内存使用情况,我注意到所有的viewDidUnload调用没有释放大量的内存,所以在我点击几下应用程序,它再次在内存警告,一切似乎再次罚款,但没有很多内存已经释放,所以它再次在内存警告更快,然后它崩溃(大部分时间后的第三个内存警告) 。 这个崩溃是随机的:应用程序冻结,应用程序离开,我的debugging器说,应用程序暂停,但没有不好的访问或sigbort,没有僵尸。 我的猜测是内存警告不能释放出足够的内存。 (我检查了我所有的viewDidLoad,并使所有在viewDidLoad中分配的对象都是零) 任何帮助将是有用的! 非常感谢。

如何在iOS中查找文本片段范围

如何在iOS中find文本段(AKA代码段)范围? 意思是,文本段的起始地址和结束地址是什么? 我发现这个有趣的post,但它适用于我在Android上,但不适用于iOS。

iOS下载和parsing大的JSON响应导致CFData(存储)泄漏

用户第一次打开我的应用程序,我需要下载大量的数据。 我以JSONforms从服务器获取所有这些数据。 根据用户的不同,这些JSON文件可以在10kb到30mb的范围内,其中有10个以上。 当JSON不超过500条logging时,我没有任何问题,但是正如我所说的,有些logging超过了10,000条,最多可以达到30MB。 当下载较大的JSON时,我的应用程序会分配大量的内存,直到我最终得到内存警告,应用程序崩溃。 看来CFData必须是我在didReceiveData中构build的NSMutableData。 当我下载一个JSON时,CFData(store)就会上升 – 当我开始parsing时,它停止上升。 在继续下载和parsing下一个JSON之前,如何清除这些数据? 如下所示,内存中有200mb的CFData(存储): – 挖入CFData并不能帮助我: 这里是我创build操作来获取这些各种JSON的代码 – – (void)checkForUpdates { if(!_globals) _globals = [MySingleton sharedInstance]; MyAFHTTPClient* client = [MyAFHTTPClient sharedClient]; NSString* path = [NSString stringWithFormat:@"cache?deviceUID=%@&token=%@",[_globals getMacAddress], [_globals getToken]]; NSURLRequest* request = [client requestWithMethod:@"GET" path:path parameters:nil]; _currentEnvironment = [_globals getActiveEnvironment]; if(!_currentEnvironment.didDownloadDataValue) [self setupAndShowHUDinView:self.view withText:@"Checking for updates…"]; AFJSONRequestOperation* operation […]

在UIScrollView的子视图中绘制一个网格分配巨大的内存

我试图在UIScrollView中创build一个UIView,其中只包含一个由UIBezierPath或使用CG函数淹没的简单网格(行为行和列)。 问题是,当我有更大的内容大小的UIScrollView(以及更大的子视图),在绘制网格时,分配了大量的内存(50MB或更多)。 UIViewController其中包括整个场景只是UIScrollView – 在viewDidLoad中添加子视图: @interface TTTTestViewController() @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; @end @implementation TTTTestViewController -(void)viewDidLoad { [super viewDidLoad]; // create the subview TTTTestView *testView = [[TTTTestView alloc] init]; [self.scrollView addSubview:testView]; //set its properties testView.cellSize = 50; testView.size = 40; // set the content size and frame of testView by the properties self.scrollView.contentSize = […]