iOS提供了ARC功能,很大程度上简化了内存管理的代码。但使用ARC并不代表了不会发生内存泄露,使用不当照样会发生内存泄露。下面列举两种内存泄露的情况。1,循环参照A有个属性参照B,B有个属性参照A,如果都是strong参照的话,两个对象都无法释放。这种问题常发生于把delegate声明为stron...
分类:
其他好文 时间:
2014-10-14 11:39:38
阅读次数:
209
OS的运行时是由一个一个runloop组成的,每个runloop都会执行下图的一些步骤:可以看到,每个runloop中都创建一个AutoreleasePool,并在runloop的末尾进行释放,所以,一般情况下,每个接受autorelease消息的对象,都会在下个runloop开始前被释放。也就是说,在一段同步的代码中..
分类:
其他好文 时间:
2014-10-14 04:16:17
阅读次数:
220
模态对话框(Modal Dialogue Box,又叫做模式对话框),是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭。 也就是说,只要不释放该对话框,主框架就无法响应,类似于进程阻塞的效果。 JAVA中Dialog和J...
分类:
其他好文 时间:
2014-10-14 03:06:18
阅读次数:
147
这几天写C程序,问题不断,先记下来吧double free or corruption字面意思理解为重复释放空间或崩溃,通常由于你调用了两次free,虽然你可能不是两次给free()传同一个指针,但可能因为第一个free的指针代表的空间越界了将第二个指针指向的区域也free了。*** stack s...
分类:
编程语言 时间:
2014-10-13 23:08:47
阅读次数:
212
重点掌握
/*
* wait 和 sleep 区别?
* 1.wait可以指定时间也可以不指定
* sleep必须指定时间
* 2.在同步中,对CPU的执行权和锁的处理不同
* wait释放执行权,释放锁 sleep释放执行权,不释放锁
*/
//同步里具备执行资格的线程不止一个,但是能得到锁的只有一个,所以能执行的也只有一个
一、停止线程的方式
...
分类:
编程语言 时间:
2014-10-13 18:59:27
阅读次数:
229
Cocos2d-x中所有内存管理方式的基础是引用计数,动态分配一个Ref对象后其引用计数为1,并通过retain和release来增持和减少其引用计数。引用计数本身并不能帮助我们进行内存管理。
为了正确地释放对象的内存,Cocos2d-x使用Objective-C里面的自动回收池的机制来管理对象内存的释放。Autorelease有点类似于一个共享的”智能指针”,该”智能指针”的作用域为一...
分类:
其他好文 时间:
2014-10-13 18:50:09
阅读次数:
251
1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。
sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。
2、锁: 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
sleep不出让系...
分类:
编程语言 时间:
2014-10-13 18:41:27
阅读次数:
207
在C++中,动态内存分配是一把双刃剑,一方面,直接访问内存地址提高了应用程序的性能,与使用内存的灵活性;另一方面,由于程序没有正确地分配与释放造成的例如野指针,重复释放,内存泄漏等问题又严重影响着应用程序的稳定性。
人们尝试着不同的方案去避免这个问题,比较常用的如智能指针,自动垃圾回收等,这些要么影响了应用程序的性能,要么仍然需要依赖于开发者注意一些规则,要么给开发者带来了另外一些很丑陋...
分类:
其他好文 时间:
2014-10-13 18:15:19
阅读次数:
232
一、预备知识―程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)― 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) ― 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意...
分类:
其他好文 时间:
2014-10-13 15:39:59
阅读次数:
136
性能优化
在大数据量遍历时(例如查找消息敏感词),需要手动使用clear方法释放缓存中的数据,防止缓存中数据过多浪费内存。1+N问题:将Fetch设为LAZY可以在需要时才发出sql语句,或者设置BatchSize指定一条sql语句查询多个对象。list方法会把所有对象都取出,而iterate方法会先取出所有对象的主键,需要时再根据主键取出对象。另外iterate会查询二级缓存,list...
分类:
编程语言 时间:
2014-10-13 14:23:19
阅读次数:
225