如何区分垃圾 上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即, ...
分类:
其他好文 时间:
2017-04-27 12:39:51
阅读次数:
135
Python GC主要运用了“引用计数”(reference counting)来跟踪和回收垃圾。在引用计数的基础上,通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用的问题。通过“分代回收”(generation collection)以空间换取时间来提高垃圾回收效率 ...
分类:
编程语言 时间:
2017-04-25 21:35:43
阅读次数:
243
jvm垃圾收集算法 1、引用计数算法每个对象有一个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单,无法解决对象相互循环引用的问题。还有一个问题是如何解决精准计数。这种方法现在已经不用了 2、根搜索算法从GC Roots开始向下搜索,搜索所走过的路径称为引用链 ...
分类:
其他好文 时间:
2017-04-25 13:29:02
阅读次数:
205
1、创建block用copy修饰,拷贝到堆上 2、之前一直用这种写法,但会碰到提前释放的状态 __weak typeof(self)wakeself = self; 3、就用弱指针指向self,在block内部对weakSelf产生一个强引用,就解决了提前释放的问题 @weakify(self); ...
分类:
其他好文 时间:
2017-04-24 17:19:59
阅读次数:
134
前言block在Objective C开发中应用非常广泛,我们知道block会捕获外部对象,也知道使用block要防止循环引用。那么block这套机制在Objective C中是如何实现的呢?本文通过...
分类:
其他好文 时间:
2017-04-17 21:15:42
阅读次数:
186
网上有很多block文章,这篇只用来记录自己认为重要的点。 一、block本质是个对象,涉及闭包的概念,用于封装代码 二、block由储存位置不同有的类型,这些类型只有编译器使用 1、 _NSConcreteStackBlock (NSStackBlock) 存储在栈上;2、 _NSConcrete ...
分类:
移动开发 时间:
2017-04-17 17:18:02
阅读次数:
217
1,在MRC 时代,__block 修饰,可以避免循环引用;ARC时代,__block 修饰,同样会引起循环引用问题; 2,__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型; 3,__weak只能在ARC模式下使用,也只能修饰对象,不能修饰基本数据类型; 4 ...
分类:
其他好文 时间:
2017-04-17 13:02:56
阅读次数:
142
可以从不同的的角度去划分垃圾回收算法: 按照基本回收策略分 引用计数(Reference Counting): 比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。 标记-清除(Mark- ...
分类:
编程语言 时间:
2017-04-16 16:26:26
阅读次数:
146
Ps 修改EF5.0的tt文件(添加命名空间和特性and备注),之所以修改是因为,使用Json.net序列化但是又不能序列化导航属性,因为这样会使程序运行时引发一个循环引用的BUG,所以需要在tt文件中遍历的时候添加命名空间和给导航属性添加特性 一 EF 5.0 tt文件修改 1添加类备注(添加命名 ...
分类:
其他好文 时间:
2017-04-15 21:38:21
阅读次数:
167
趁着写完小论文还未彻底消散的学习氛围,开始着重巩固自己JavaScript的基础知识,为秋招做最基本的准备。 基本类型包括:Undefined,Null,Boolean,Number和String,基本类型是按值访问方式; 引用类型的值是对象,是按引用方式引用; 在复制变量值时,两种数据类型的差异表 ...
分类:
编程语言 时间:
2017-04-12 19:57:04
阅读次数:
163