IOS-内存检测以及优化

 PS:开始写这个系列的笔记:主要是对过去自己比较模糊的一些概念进行测试,明确结果,提高自己

  IOS 应用如果占用系统的内容过大(8GB),就会造成应用直接被系统以崩溃的形式关闭,一次控制应用占用的内存大小是非常重要的事情。

  现在我们来看看,一个空的应用占据的内容的大小:

  测试环境:xCode 5.0/IOS 5

  启动一个空应用,占用的内存为 2.6MB,占据应用崩溃的阀值为 0.03%

  1:关于导航条的 Push和popup的测试结果

  [self.navigationController pushViewController:m_navanimated:YES];

  [self.navigationController popViewControllerAnimated:YES];

  对于

  pushViewController ,会将对应的ViewController对象的引用计数器+1

  popViewControllerAnimated   会将对应的ViewController对象的引用计数器-1

  但是有一点需要明确的是,对于函数

  -(void)dealloc

  {

  //Objects release here

  [super deallco];

  }

  只有在该引用计数器的值==0的时候才会调用,这个是必须牢记的。

  在执行函数[self.navigationController popViewControllerAnimated:YES];的时候,如果弹出的ViewController对应的引用计数器为0,那么也会执行dealloc 函数。

  所以再使用

  [self.navigationController pushViewController:m_navanimated:YES];

  [self.navigationController popViewControllerAnimated:YES];

  栈函数对的时候,为了释放内存,我们可以这么使用

  Nav_1 *m_nav = [[[Nav_1  alloc] initWithNibName:nil bundle:nil] autorelease];

  [self.navigationController  pushViewController:m_nav  animated:YES];

  这样就最大限度的节省了宝贵的内存空间

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-08-01 21:15:59

IOS-内存检测以及优化的相关文章

iOS内存优化(持续更新)

   在iphone开发过程中,代码中的内存泄露我们很容易用内存检测工具leaks 检测出来,并一一改之,但有些是因为ios 的缺陷和用法上的错误,leaks 检测工具并不能检测出来,你只会看到大量的内存被使用,最后收到didReceiveMemoryWarning,最终导致程序崩溃.以下是开发过程中遇到的一些问题和网上的一些资料,总结了一下: UIImage如何加载图片 用UIImage加载本地图像最常用的是下面三种: 1.imageNamed UIImage *image = [UIImag

ios开发-ios如何检测网络并尝试连接获取数据

问题描述 ios如何检测网络并尝试连接获取数据 当网络断开时,不断检测网络的连接状态,再连接网络,刷新数据?怎么实现?我用NSNotificationCenter发送通知的时候,会使内存激增,因为不断的在尝试连接...请问怎么处理? 解决方案 下载个那个官方的reachability检测有网没网试试,如果有网的话执行刷新数据的方法 解决方案二: iOS 从网络获取数据

[翻译] Facebook 的 iOS 内存泄漏监测自动化实践

原文链接 [需翻墙]:Automatic memory leak detection on iOS 内存是移动设备上的共享资源,如果一个 App 无法正确地进行内存管理的话,将会导致内存消耗殆尽,闪退以及性能的严重下降. Facebook 的 iOS 版本的许多功能模块共用了同一份内存空间,如果其中的某一个模块消耗了特别多的内存资源的话,将会对整个 App 造成严重影响.举个栗子,当某个功能模块不小心造成了内存泄漏的时候,这个情况就很有可能会发生. 在 Facebook,我们有非常多的工程师同时

iOS 内存使用陷阱

在iphone开发过程中,代码中的内存泄露我们很容易用内存检测工具leaks 检测出来,并一一改之,但有些是因为ios 的缺陷和用法上的错误,leaks 检测工具并不能检测出来,你只会看到大量的内存被使用,最后收到didReceiveMemoryWarning,最终导致程序崩溃.以下是开发过程中遇到的一些问题和网上的一些资料,总结了一下: 一.[UIImage imageNamed:]只适合与UI界面中的贴图的读取,较大的资源文件应该尽量避免使用 用UIImage加载本地图像最常用的是下面三种:

ios sqlite3-ios 中应用sqlite3进行本地读取 每次读取 ios内存增加知道内存不足 崩溃

问题描述 ios 中应用sqlite3进行本地读取 每次读取 ios内存增加知道内存不足 崩溃 sqlite3_stmt *stmt = [[BISQLiteUtil sharedBISQLiteUtil] getSQLiteStatement:(char *)[sql UTF8String]]; 1.这段代码注释内存增加没问题, 2.一释放,读取的数据不做处理,内存也会明显增加,操作几次,知道系统内存不足崩溃退出 3.sqlite3读取数据有什么优化方法吗?有人遇到过这个问题吗?急....

Cocos2d-x与ios内存管理分析(在游戏中减少内存压力)

  Cocos2d-x与ios内存管理分析(在游戏中减少内存压力) 猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网--Cocos2Dev.com,谢谢!  原文地址: http://www.cocos2dev.com/?p=281 注:自己以前也写过Cocos2d-x如何优化内存的使用,以及内存不足的情况下怎么处理游戏.今天在微博中看到有朋友介绍了下内存,挺详细的.不知道是谁写的,我记录下. 一,iOS与图片内存 在iOS上,图片会被自动缩放到2的N次方大小.比如一张1024*10

iOS内存管理和malloc源码解读

最近由于排查问题,顺便对iOS的内存管理,尤其是malloc库稍微深入地了解一下,在这里整理出来,和大家分享一下. 0. iOS内存基本原理 在接触iOS开发的时候,我们都知道"引用计数"的概念,也知道ARC和MRR,但其实这仅仅是对堆内存上对象的内存管理.用WWDC某Session里的话说,这其实只是内存管理的冰山一角. 在内存管理方面,其实iOS和其它操作系统总体上来说是大同小异的,大的框架原理基本相似,小的细节有所创新和不同. 和其它操作系统上运行的进程类似,iOS App进程的

Android内存泄露总结(附内存检测工具)

Java 中的内存分配 主要是分三块: 静态储存区:编译时就分配好,在程序整个运行期间都存在.它主要存放静态数据和常量. 栈区:当方法执行时,会在栈区内存中创建方法体内部的局部变量,方法结束后自动释放内存. 堆区:通常存放 new 出来的对象.由 Java 垃圾回收器回收. 栈与堆的区别 栈内存用来存放局部变量和函数参数等.它是先进后出的队列,进出一一对应,不产生碎片,运行效率稳定高.当超过变量的作用域后,该变量也就无效了,分配给它的内存空间也将被释放掉,该内存空间可以被重新使用. 堆内存用于存

iOS内存无限增长,ImageIO_JPEG_Data

问题描述 iOS内存无限增长,ImageIO_JPEG_Data 2C 如图,ImageIO_JPEG_Data很大,而且没有释放,求指导~ 解决方案 这个程序有内存x泄漏? 解决方案二: 您解决了嘛?我也遇到这种问题 解决方案三: sdwebimage 压缩处理的原因 图片像素过高导致 解决方案四: sdwebimage 压缩处理的原因 图片像素过高导致

服务器-iOS 数据 设置模式 优化 数据返回速度

问题描述 iOS 数据 设置模式 优化 数据返回速度 现在APP的问题 ,后台.很小压力很大,逻辑判断复杂,返回数据速度太慢. 现在的流程:我要所搜附近的小时工,手机定位把自己的坐标发给付服务器,服务器跳去所有的员工,首先判断服务类型是否为小时工 然后判断是否空闲 剩下若干个空闲的小时工,然后根据系统工具和小时工的坐标计算剩下每个小时工到客户的距离,根据距离排序,取里的最近的几个人返回.经过这一系列操作所耗费的时间太长,现在想优化,减少时间. 解决方案1. 把客户端和员工端增加固定地址的设置,客