首页
AI Coding
数据标注
NEW
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
内存管理
订阅
RU107516
更多收藏集
微信扫码分享
微信
新浪微博
QQ
9篇文章 · 0订阅
OC基础知识点之-内存管理初识(内存分区)
来讲一下iOS的内存。我们知道iOS内存主要有一下五大区域,分别是栈区、堆区、全局区、常量区、代码区。其中全局区和常量区有叫数据段(_DATA区)。下面我们分别来看下每个区的作用 全局区是又叫BSS段,是编译期分配的内存空间,在iOS一般是以0x1开头,在程序运行的过程中该数据…
iOS Crash防护
“信号”是操作系统模拟软硬中断的工作过程的一种处理异步事件的机制,例如:终端用户键入ctrl+c会产生SIGINT信号默认会终止终端进程。 终端连接断开,则将此信号送给与该终端相关的控制进程(会话首进程)。 若父进程退出导致进程组成为孤儿进程组,且该进程组中有进程处于停止状态(…
一文读懂崩溃原理
64位系统对应的__PAGEZERO段地址空间为0~4GB,在这个范围内所有访问权限-读、写和执行-都被撤销,因此若访问该地址就会引发MMU的硬件页错误,进而产生一个异常。 为了防止一个应用占用过多的系统资源,开发iOS的苹果工程师门设计了一个“看门狗”Watchdog的机制。…
iOS底层探索--内存对齐
1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。 2、性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内…
iOS 数据结构
当一个app启动后,代码区、常量区、全局区大小就已经固定,因此指向这些区的指针不会产生崩溃性的错误。而堆区和栈区是时时刻刻变化的(堆的创建销毁,栈的弹入弹出),所以当使用一个指针指向这个区里面的内存时,一定要注意内存是否已经被释放,否则会产生程序崩溃(也即是野指针报错) 哈希表…
内存管理系列—OC的内存管理方案
为了节省内存和提高执行效率,苹果提出了Tagged Pointer的概念。对于 64 位程序,引入 Tagged Pointer 后,相关逻辑能减少一半的内存占用,苹果对于Tagged Pointer特点的介绍: Tagged Pointer指针的值不再是地址了,而是真正的值。…
iOS 内存管理:从 MRC 到 ARC
首先,我们从 C 语言开始简单了解程序内存分布。一个由 C 语言编写的程序内存主要由以下5个部分组成: 其中代码段、数据段、BSS 段在编译时由编译器分配空间,而堆和栈是在程序运行时系统分配的空间。 栈是用于存放本地变量,局部变量,函数参数值的内存区域。程序在运行时,操作系统会…
iOS探索 内存管理篇
一个优秀的app必然是对内存"精打细算"的,本文就来探索一下内存管理中的一些门道。如果你看到了这篇文章,请仔细看下去,尤其是NSTimer部分的内容介绍了NSTimer和Block中的循环引用存在的差异 1. 五大区 2. 内存布局面试题 1. taggedPointer 最后…
iOS概念攻坚之路(三):内存管理
iOS 的内存管理不止是 「引用计数表」。 iOS 开发者基本都知道 iOS 是通过「引用计数」来管理内存的,但是也许并不知道 iOS 其他的内存管理方式,比如 「Tagged Pointer」(带标记的指针),比如 「NONPOINTER_ISA」(非指针型 isa),这个要…