美文网首页
内存管理相关

内存管理相关

作者: 怪兽密保 | 来源:发表于2016-10-10 14:42 被阅读0次

一.内存

1•移动设备的内存极其有限,每个app所能占用的内存是有限制的

•下列行为都会增加一个app的内存占用
Ø创建一个OC对象
Ø定义一个变量
Ø调用一个函数或者方法

2•当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间。比如回收一些不需要使用的对象、变量等
3•如果app占用内存过大

Ø系统可能会强制关闭app,造成闪退现象,影响用户体验

二.内存管理

1•如何回收那些不需要再使用的对象?

Ø那就得学会OC的内存管理

2.•所谓内存管理,就是对内存进行管理,涉及的操作有:

Ø分配内存 :比如创建一个对象,会增加内存占用
Ø清除内存 :比如销毁一个对象,能减小内存占用

3.•内存管理的管理范围

Ø任何继承了NSObject的对象
Ø对其他非对象类型无效(int、char、float、double、struct、enum等)

4.•只有OC对象才需要进行内存管理的本质原因

(1)OC对象存放于堆里面
(2)非OC对象一般放在栈里面(栈内存会被系统自动回收)

三.内存管理的原则
•苹果官方规定的内存管理原则

Ø谁创建谁release:如果你通过alloc、new或[mutable]copy来创建一个对象,那么你必须调用release或autorelease
Ø谁retain谁release:只要你调用了retain,就必须调用一次release

•总结一下就是

Ø有加就有减
Ø曾经让对象的计数器+1,就必须在最后让对象计数器-1

四.堆栈的区别

1>堆空间的内存是动态分配的,一般存放对象,并且需要手动释放内存

2>栈空间的内存由系统自动分配,一般存放局部变量等,不需要手动管理内存

相关文章

  • 内存管理相关

    引文: 多线程相关 OC 语言相关 内存管理相关 UI视图相关 RunLoop相关 内存布局 内存管理方案 数据结...

  • 内存管理相关

    1.内存布局 stack: 方法调用 heap: 通过alloc等分配的对象 bss: 未初始化的全局变量 dat...

  • 内存管理相关

    一.内存 1•移动设备的内存极其有限,每个app所能占用的内存是有限制的 •下列行为都会增加一个app的内存占用Ø...

  • 内存管理相关

    一· 使用CADisplayLink,NSTimer有什么注意点? 其中创建定时器的方式有:NSTimer,CAD...

  • 内存管理相关

    1.堆和栈 堆:存放OC对象,先进先出。(吃了拉) 栈:存放非OC对象,先进后出。(吃了吐) 2.@propert...

  • 内存管理相关

    1. 内存布局 stack:栈区,方法调用 heap:堆区,通过alloc等分配的对象 bss:未初始化的全局变量...

  • 内存管理相关

    一、ARC管理内存是使用assign还是weak? assign: 可以修饰基本数据类型,也可以修饰对象。修饰代理...

  • ② 内存管理相关

    一、 在 Obj-C 中,如何检测内存泄漏?你知道哪些方式? 目前我知道的方式有以下几种 Memory Leaks...

  • Redis源码:内存管理与事件处理

    Redis内存管理 Redis内存管理相关文件为zmalloc.c/zmalloc.h,其只是对C中内存管理函数做...

  • iOS-内存管理、性能优化、离屏渲染相关

    本篇涵盖程序内存管理、优化相关、离屏渲染相关等. 1.深入OC的内存管理2.iOS内存、缓存及存储优化3.Xcod...

网友评论

      本文标题:内存管理相关

      本文链接:https://www.haomeiwen.com/subject/bknmyttx.html