python对象销毁(垃圾回收): 1>同Java语言一样,python使用了引用计数这一简单计数来追踪内存中的对象,也就是说,python内部记录着所有使用中的对象各有多少引用,一个内部跟踪变量称为一个引用计数器,当对象被创建的时候就创建了一个引用计数,当这个对象不再需要的时候,也就是说,这个对象 ...
分类:
编程语言 时间:
2016-12-17 19:29:32
阅读次数:
162
3.2对象已死吗?
3.2.1 引用计数法
给对象添加一个引用计数器,每当有一个地方引用它的地方,计数器值+1;当引用失效,计数器值就减1;任何时候计数器为0,对象就不可能再被引用了。
它...
分类:
其他好文 时间:
2016-11-20 16:19:12
阅读次数:
243
一、对象引用的类型 Java 中的垃圾回收一般是在 Java 堆中进行,因为堆中几乎存放了 Java 中所有的对象实例。谈到 Java 堆中的垃圾回收,自然要谈到引用。在 JDK1.2 之前,Java 中的引用定义很很纯粹:如果 reference 类型的数据中存储的数值代表的是另外一块内存的起始地 ...
分类:
其他好文 时间:
2016-11-19 20:24:44
阅读次数:
235
Linux文件删除的原理: Linux是通过link的数量来控制文件的删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除,一般来说每个文件都有2个link计数器:i_count和i_nlink. i_count的意义是当前文件使用者(或被调用)的数量i_nlink的意义是介质连接的数 ...
分类:
系统相关 时间:
2016-11-09 10:46:45
阅读次数:
190
一、Objective-C内存管理的对象 1. 值类型:比如int、float、struct等基本数据类型。 值类型会被放入栈中,在内存中占有一块连续的内存空间,遵循先进后出的原则,故不会产生碎片。 由系统分配管理 2. 引用类型:Objective-C的对象 引用类型会被放到堆中,内存分配按照一定 ...
分类:
其他好文 时间:
2016-10-28 03:28:21
阅读次数:
226
在说垃圾回收算法之前,先谈谈JVM怎样确定哪些对象是“垃圾”。 1.引用计数器算法: 引用计数器算法是给每个对象设置一个计数器,当有地方引用这个对象的时候,计数器+1,当引用失效的时候,计数器-1,当计数器为0的时候,JVM就认为对象不再被使用,是“垃圾”了。 引用计数器实现简单,效率高;但是不能解 ...
分类:
编程语言 时间:
2016-10-17 20:55:18
阅读次数:
181
1.判断对象是否存活 a.计数器算法 算法描述:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值加1;当引用失效时,计数器值减1;任何时刻计数器为0的对象就是不可能再被使用的。 该算法实现简单,效率也很高,但是Java虚拟机中没有使用计数器算法来管理内存,主要原因就是它很难解决对象之间相 ...
分类:
其他好文 时间:
2016-09-22 23:38:10
阅读次数:
119
初学iOS时候,发现有的代码通过self.xxx访问,有时通过_xxx访问,一直搞不清楚有什么区别。其实,通过self.xxx是对属性进行访问,本质是调用属性的setter方法,属性的引用计数器会+1;_xxx是直接对成员属性进行访问,是对指针的赋值,引用计数器没发生改变。下面,通过代码来看一下。 ...
分类:
其他好文 时间:
2016-08-24 14:21:13
阅读次数:
107
1 首先的问题是:jvm如何知道那些对象需要回收 ? 目前有两种算法 引用计数法 每个对象上都有一个引用计数,对象每被引用一次,引用计数器就+1,对象引用被释放,引用计数器-1,直到对象的引用计数为0,对象就标识可以回收 这个可以用数据算法中的图形表示,对象A-对象B-对象C 都有引用,所以不会被回 ...
分类:
其他好文 时间:
2016-08-22 20:08:26
阅读次数:
276
内存管理原则: 只要还有人在使用这个对象,那么这个对象就不会被回收; 只要你想使用这个对象,那么就应该让这个对象的引用计数器+1; 当你不想使用这个对象时,应该让对象的引用计数器-1; 如果你通过alloc,new,copy来创建一个对象,那么你就必须调用release或者autorelease方法 ...
分类:
其他好文 时间:
2016-08-10 12:50:22
阅读次数:
182