简介: 它是缓存类,用法和NSMutableDictionary的用法相似,在AFNetworking和SDWebImage中,使用它来缓存。 NSCache 在系统内存很低时候,会自动释放一些对象。----这句话是出自苹果官方文档,不过在模拟器中模拟内存警告时,缓存不会做清理动作,所以为了确保.....
分类:
系统相关 时间:
2015-09-16 18:00:42
阅读次数:
265
内存池:pool 用于分配无需构造的对象,如int ,char ,double等,pool p 一个可分配内存池;然后调用p.malloc()进行内存分配(p != NLL 用来判断是否申请成功)。无需手动free() 生命周期结束时自动释放。object_pool内存池对象。可用construct...
分类:
其他好文 时间:
2015-09-16 14:17:00
阅读次数:
183
今天想做个日志记录功能。网上查了下。决定使用log4net 来做。但是最发现在写日志的时候。会一直占用当前的日志文件。当你想查看的时候会提示另一个进程占用了该文件。只有到他创建下一个日志文件。然后占用下个文件时才会释放。解决方案是在appender 下面加另外贴上我自己log4的demohttp:/...
分类:
其他好文 时间:
2015-09-15 16:28:18
阅读次数:
157
——————————内存管理————————————————手动内存管理(MRC)中常用的三个方法retain:导致内存计数+1release:导致内存计数-1copy:复制出来一个新的对象 和之前对象的数据可能一致 但是 不是同一个对象 此对象内存计数是1autorelease:自动释放 当变量出...
分类:
移动开发 时间:
2015-09-12 23:33:24
阅读次数:
266
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存用来存放由new创建的对象和数组。 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。 在堆中产生了一...
分类:
编程语言 时间:
2015-09-11 09:15:40
阅读次数:
233
iOS学习笔记总结整理一.内存管理情况1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象。当用户的代码运行告一段 落,开始等待用户的操作,自动释放池就会被释放掉(调用dealloc),池中的对象都会收到一个release,有可...
分类:
移动开发 时间:
2015-09-11 01:33:19
阅读次数:
267
智能指针在C++11的标准中已经存在了,分别是unique_ptr,shared_ptr,weak_ptr,其中最常用的应该是share_ptr,它采用引用计数的方式管理内存,当引用计数为0的时候,自动释放内存,但是由于shared_ptr考虑到了线程安全,所以会存在有较大的性能损失。所以在实时游戏...
分类:
Web程序 时间:
2015-09-09 21:21:26
阅读次数:
161
一,NSObject类提供了一个autorelease方法:-(id)autorelease;该方法预先设定了一条将来在某个时间发送的release消息,其返回值是接收消息的对象。retain消息采用了相同的技术,使嵌套调用更加容易。当给一个对象发送autorelease消息时,实际上是将该对象添加...
分类:
移动开发 时间:
2015-09-09 09:42:36
阅读次数:
190
答案就是: 在函数创建对象之前先创建一个自动释放池,因为这个释放池是函数里面的局部变量,所以当函数结束的时候,会调用他的析构函数,而普通的情况是在一帧结束的时候才会调用自动释放池(不是这个,普通的)...
分类:
其他好文 时间:
2015-09-08 22:10:26
阅读次数:
155
答案就是:在函数创建对象之前先创建一个自动释放池,因为这个释放池是函数里面的局部变量,所以当函数结束的时候,会调用他的析构函数,而普通的情况是在一帧结束的时候才会调用自动释放池(不是这个,普通的)的析构函数。基于这个背景来分析一下为什么。1.内存峰值过高是为什么? 在cocos2d中因为我们在一帧....
分类:
其他好文 时间:
2015-09-08 21:35:37
阅读次数:
138