垃圾回收器GC(Garbage Collection) 一、引用计数算法(Reference Counting) 介绍:给对象添加一个引用计数器,每当一个地方引用它时,数据器加1;当引用失效时,计数器减1;计数器为0的即可被回收。 优点:实现简单,判断效率高 缺点:很难解决对象之间的相互循环引用(o ...
分类:
编程语言 时间:
2016-08-08 12:23:24
阅读次数:
201
浅拷贝:浅拷贝是对object对象的指针拷贝,让指针指向同一块内存地址,“对象永远只有一个",浅拷贝使对象的引用计数器+1。代码如下: 可以看出不可变字符串的指针指向了同一地址,并没有重新开辟内存。 深拷贝:深拷贝是对object对象的复制,保留原对象的值,开辟新的内存地址。 如图中代码,声明一个可 ...
分类:
移动开发 时间:
2016-08-05 13:45:27
阅读次数:
239
内存管理作为iOS中非常重要的部分,每一个iOS开发者都应该深入了解iOS内存管理,最近在学习iOS中整理出了一些知识点,先从MRC开始说起。 1.当一个对象在创建之后它的引用计数器为1,当调用这个对象的alloc、retain、new、copy方法之后引用计数器自动在原来的基础上加1(ObjC中调 ...
分类:
移动开发 时间:
2016-07-31 14:20:05
阅读次数:
301
1、深浅拷贝的使用时机:浅拷贝:对只读数据共用一份空间,且只释放一次空间;深拷贝:数据的修改,的不同空间;2、引用计数器模型使用变量use_count,来记载初始化对象个数;(1)、static模型(此处只用浅拷贝与浅赋值)#include<iostream>
#include<string.h>
#incl..
分类:
其他好文 时间:
2016-07-23 21:33:16
阅读次数:
243
1.Linux驱动的代码重用 静态重用:将重用的代码放在其他文件中,如使用哪些功能,include相应的头文件 动态重用:一个linux驱动使用另一个linux驱动中的资源 2.强行卸载linux驱动 情况1:初始化函数崩溃(将当前的linux驱动模块的引用计数器清零) 情况2:卸载函数被阻塞(将原 ...
分类:
其他好文 时间:
2016-07-03 18:54:37
阅读次数:
103
一、引用计数法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,当引用失效时,计数器值就减1,任何时刻计数器为0的对象就是不可能再被使用的。 但是它很难解决对象之间相互循环引用的问题。 比如说两个对象互相引用对方,导致它们的引用计数都不为0,于是引用计数算法无法通知GC收集器回收 ...
分类:
其他好文 时间:
2016-06-26 00:24:46
阅读次数:
162
今天在整理以前的一些琐碎知识,今天就分享一个Foundation与coreFoundation的相互转换细节问题,其中的引用计数器是需要考虑的方面。 ARC 环境下,CoreFoundation框架中的对象依然要使用手动引用计数管理,手动内存管理的原则为:凡是使用的函数中出现了了copy,retai ...
分类:
其他好文 时间:
2016-06-21 01:15:08
阅读次数:
211
1.栈放局部变量(代码结束就释放,系统自动回收)堆放对象(动态分配) 2.每个对象里分配4个字节的存储空间放 引用计数器 当引用计数器值为0时对象占用的内存自动被回收自动回收,引用计数器的初始值是1. 3.retain 引用计数器+1 release引用计数器-1 4.可以给对象发送(调用)reta ...
分类:
移动开发 时间:
2016-06-20 17:13:42
阅读次数:
212
标记计数法(Reference Counting) 主要内容 对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1,当引用失效时,引用计数器就减1.只要对象A的引用计数器的值为0,则对象A就不可能再被使用。 主要缺点 可能造成循环引用,无法回收的情况。例如,如下图,我们构造了一个列表, ...
分类:
编程语言 时间:
2016-06-17 14:25:22
阅读次数:
421
一、 内存淘汰 二、对象引用计数器 1、redis的key -》 value 是以redisObject进行存储的,当对象初始化时,refcount = 1;(图1) 2、客户端使用get 时,refcount +1,当释放时refcount -1; 3 、当使用del 时,refcount -1 ...
分类:
其他好文 时间:
2016-06-13 15:31:51
阅读次数:
124