因为Python的线程虽然是真正的线程,但解释器执行代码时,有一个GIL锁:Global Interpreter Lock,任何Python线程执行前,必须先获得GIL锁,然后,每执行100条字节码,解释器就自动释放GIL锁,让别的线程有机会执行。这个GIL全局锁实际上把所有线程的执行代码都给上了锁...
分类:
编程语言 时间:
2015-09-08 12:15:04
阅读次数:
129
RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理。之后会介绍一下在 iOS 中,苹果是如何利用 RunLoop 实现自动释放池、延迟回调、触摸...
分类:
其他好文 时间:
2015-09-08 09:42:59
阅读次数:
207
java7中引入自动资源管理(ARM),使用try(){}catch{}finally{},()中的资源会在程序运行后自动释放。文件流分为输入流和输出流,典型用法FileReader fr = new FileReader("poem.txt"); //读取已有文件FileWriter fw = n...
分类:
编程语言 时间:
2015-09-07 22:26:03
阅读次数:
183
四、自动释放池 (autorelease)1)基本原理:1> 自动释放池是OC里面一种内存管理的自动回收机制,一般可以将临时变量添加到自动释放池中,统一回收释放。2> 当自动释放池销毁的时候,在自动释放池中所有的对象都会调用一次release方法。3> OC对象只要发送一条autorelease消息...
分类:
其他好文 时间:
2015-09-04 15:38:58
阅读次数:
164
概述
我们知道在程序运行过程中要创建大量的对象,和其他高级语言类似,在ObjC中对象时存储在堆中的,系统并不会自动释放堆中的内存(注意基本类型是由系统自己管理的,放在栈上)。如果一个对象创建并使用后没有得到及时释放那么就会占用大量内存。其他高级语言如C#、Java都是通过垃圾回收来(GC)解决这个问题的,但在OjbC中并没有类似的垃圾回收机制,因此它的内存管理就需要由开发人员手动维护。今天将...
分类:
移动开发 时间:
2015-08-31 17:24:51
阅读次数:
227
有些程序运行的时候,可能调用外部的dll,用户使用时可能会不小心丢失这些dll,导致程序无法正常运行,因此可以考虑将这些dll嵌入到资源中,启动时自动释放。对于托管的dll,我们可以用打包软件合成一个exe(例如利用Imerge),但是对于一些用C++等写的非托管dll,就比较麻烦。在这种情况下,....
iOS与Android垃圾处理机制是不同的iOS:ARC(自动释放):(AutomaticReferenceCounting)机制,并不需要用户手动去release一个对象,而是在编译期间会自动帮你添加那些以前你经常写的[objectrelease]。Android:垃圾回收机制,垃圾回收是一种动态...
分类:
移动开发 时间:
2015-08-30 23:00:52
阅读次数:
297
1.空间分配1.1:栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。1.2:堆区(heap) — 在内存开辟另一块存储区域。一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据...
分类:
其他好文 时间:
2015-08-30 22:48:51
阅读次数:
172
手动内存管理什么是内存管理.进程空间-代码区:只读-堆:自己创建、自己回收释放,对象是保存在堆区的。-全局区:进程启动时候分配,进行结束时释放。-栈:局部变量,自动创建,自动释放空间.什么是内存管理-只要对堆内进行管理,所谓的管理是值内存的分配(创建)和释放(回收..
分类:
其他好文 时间:
2015-08-29 17:10:04
阅读次数:
195
*读取图片的方法:*[UIImage imageNamed:filename]:通过图片名称加载会缓存图片,使用完成后不会释放,占用内存*UIImage imageWithContentsOfFile:path:通过文件路径加载,不会缓存图片,使用完后自动释放建议较多图片使用imageWithCon...
分类:
其他好文 时间:
2015-08-28 23:15:22
阅读次数:
182