内存管理(2)

内存管理(2)
copy,assgin,retain区别
assgin是直接赋值,取的是一个别名,用于基础数据类型(NSinteger)和基本数据类型(int,float,double,char等),是对一个对象进行操作就是对另一个进行操作,retaincount不会加1.
retain:保留赋值,释放旧对象,再将将旧对象值赋予输入对象,引用计数为2.retain是指针拷贝,在栈上拷贝一份,内容是相同的,都指向堆上相同位置。
copy:建立新对象,然后释放旧对象,引用计数也加1,是真正拷贝对象。在栈上复制一份,内容不相同,地址也不相同,所以分别指向堆的不同内存地址。

nonatomic和atomic区别:
atomic存在线程保护,防止写未完成时被另一个线程读取,造成数据损失,默认情况下是原子性。
nonatomic不存在线程保护,是多线程,是非原子性,多线程可以提高访问效率。

readwrite和readonly区别:
readwrite:默认情况下是readwrite,设置可访问级别 。
readonly:表示只读,只生成getter方法,不生成setter方法。

使用便利构造器时,不用自己管理内存。

ARC:(Automatic reference counting)自动引用计数,oc支持垃圾回收机制,但是在apple移动终端还不支持,需要我们自己手动管理内存。ARC实现原理是在编译期间,他会自动插入retain,release,autorelease,不影响性能。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 内存管理主要包括内存节点、分区、页框和虚拟内存等概念。 1. 内存节点 Linux 根据 CPU 访问代价的不同将内存划分为不同的分区,即内存节点。内核以 struct zone 来描述内存分区。通常一个节点分为 DMA、Normal 和 High Memory 内存区。其中,DMA 内存区为直接内存访问分区,通常为物理内存的起始16M,供外设使用,外设和内存直接访问数据而无需 CPU 参与;Normal 内存区为从 16M 到 896M 的内存区;HighMemory 内存区为 896M 以后的内存区。 2. 分区 内存节点中的分区是内存管理的基本单位,每个分区都有自己的页框列表和空闲页框列表。页框是内存管理的最小单位,通常为 4KB。内核通过页框来管理内存,将内存分为多个页框,每个页框都有自己的状态,包括已分配、未分配、已使用等。 3. 页框 页框是内存管理的最小单位,通常为 4KB。内核通过页框来管理内存,将内存分为多个页框,每个页框都有自己的状态,包括已分配、未分配、已使用等。内核通过页表来映射虚拟地址和物理地址,将虚拟地址转换为物理地址。 4. 虚拟内存 虚拟内存是一种将硬盘中划出一段 swap 分区当作虚拟的内存,用来存放内存中暂时用不到的内存页,等到需要的时候再从 swap 分区中将对应的内存页调入到内存中的技术。硬盘此时相当于一个虚拟的内存。Linux 通过虚拟内存技术来扩展内存,使得进程可以使用比物理内存更大的内存空间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值